我正在尝试更改 Collection 的属性以在渲染之前为它们提供绝对位置。如果该项目是集合中的第一个,则它的顶部为 0,左侧为 0。第二个的顶部为 0,左侧为 20,依此类推。但是当我尝试将此逻辑构建到我的模板中时,它会导致无限循环。这是我的代码:
if (Meteor.is_client) {
_.extend(Template.movies, {
movies: function() {
var movies = Movies.find({}, {sort: {name: 1}});
var determineLocation = function(){
console.log('hello');
var count = 0;
movies.forEach(function(movie){
// do some math
Movies.update(movie._id, {$set: {left: 10, top: 20}});
count++;
});
};
determineLocation();
return movies;
}
});
};
我认为这样做是因为 Movies.update 命令触发了 movies 函数再次渲染,从而导致了无限循环。我应该如何解决这个问题?放置确定位置函数的正确位置在哪里?