簡體   English   中英

流星無限循環

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM