[英]meteor infinite loop
我試圖改變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命令觸發電影功能再次渲染,從而導致無限循環。 我應該怎么解決這個問題? 放置determineLocation函數的正確位置在哪里?
您希望此代碼在客戶端首次加載時運行一次嗎? 我認為Meteor.startup
調用是合適的:
Meteor.startup(function() {
// do the updating part
});
將您的meteor擴展放在啟動Meteor啟動功能中:
Meteor.startup( function(){
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;
}
});
};
初創公司或多或少合並,所以不用擔心。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.