コレクションの属性を変更して、レンダリングする前に絶対位置を指定しようとしています。アイテムがコレクションの最初にある場合は、上に 0、左に 0 が割り当てられます。2 番目には上に 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関数を再度レンダリングするようにトリガーし、無限ループが発生するため、これを行っていると思います。これを回避するにはどうすればよいですか?defineLocation 関数を配置する適切な場所はどこですか?