javascript - 当 ember 中的属性发生变化时,列表不会重新排序

标签 javascript ember.js model

我制作了一个小演示应用程序,其中有一个推文列表,并且每 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);

收藏夹正在发生变化,我只是想知道为什么列表没有重新排列。

最佳答案

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

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

您需要将model设置为模型,如下所示:

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

并迭代模板中的模型,如下所示:

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

关于javascript - 当 ember 中的属性发生变化时,列表不会重新排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43701671/

相关文章:

javascript - 使用键或索引方法从 Firebase 服务器删除数据

javascript - JSON 解析器错误

ember.js - 如何使用Ember.js去路由?

ruby - 使用 Rails 3 从现有表生成模型

C# 客户端-服务器协议(protocol)/模型问题

javascript - 我需要用引号引起来的匹配字符串

Javascript 生成的 HTML 不起作用

ember.js - 警告路由识别器

javascript - Ember.js:数组中当前元素的计算属性

ios - didSelectItemAtIndexPath pushViewController