【问题标题】:List not resorting when property changes in ember当 ember 中的属性发生变化时,列表不使用
【发布时间】:2017-05-01 13:01:01
【问题描述】:

我制作了一个小演示应用程序,其中有一个推文列表,我每 0.3 秒更改一次随机推文的收藏夹数量,该列表应该根据收藏夹显示前 3 条推文,但我可以不要在每次为推文更改多个收藏夹时都使用它。

我用这个应用在jsfiddle做了一个演示(必须按下显示列表才能显示列表)。

按下开始更改收藏夹按钮时,收藏夹开始更改。

在我的排序功能中,我希望它检查任何推文的收藏夹是否发生了变化

 App.AppModel = Ember.Object.extend({
                topTweets: function(){
                    return this.get('tweets').toArray().sort(function(a, b){
                        console.log("sort");
                        return b.favorites-a.favorites;
                    }).slice(0, 3);
                }.property('tweets.@each.favorites')
            });

这是我更改随机推文收藏夹的地方

  setInterval(function(){
                                   var iPosition = _.random(0, numTweets-1);
                                   var iFavorites = _.random(0, 4000);
                                    App.appModel.get('tweets').set(iPosition+'.favorites', iFavorites);
                                    App.appModel.get('tweets').set(iPosition+'.text', iFavorites)
                                }.bind(this),300);

收藏正在改变我只是想知道为什么列表没有恢复。

【问题讨论】:

    标签: javascript ember.js model


    【解决方案1】:

    在下面的行中,您将获得topTweets 并设置在data 上,并且没有在data 上设置观察者来观察不断变化的基础数据。

    this.set('model', {data: App.appModel.get('topTweets')});
    

    您需要将model 设置为模型,例如:

    this.set('model', App.appModel);
    

    并在模板中迭代模型,如:

    {{#each model in this.model.topTweets}}
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-01-15
      • 1970-01-01
      • 2012-04-13
      • 1970-01-01
      • 2012-04-18
      • 2018-04-07
      • 2020-01-18
      相关资源
      最近更新 更多