反转内容数组

时间:2012-03-18 03:13:25

标签: ember.js

我在ArrayController中存储了一个搜索词列表。我希望搜索词最新显示到最旧。默认情况下,Ember按顺序输出它们。

您可以在此处查看我当前的实施:http://andymatthews.net/code/emberTweets/

这是相关的代码。

{{#each App.recentUsersArray.reverse}}
    <li>
        <a href="#" title="view again" {{action "searchAgain" target="App.recentUsersArray"}}>{{this}}</a>
    </li>
{{/each}}

App.recentUsersArray = Em.ArrayController.create({
    content: [],
    reverse: function(){
        return this.content.reverse();
    }.property(),
});

你可以看到我正在尝试使用property()方法来反转它,但它无法正常工作。我做错了吗?

1 个答案:

答案 0 :(得分:7)

您应始终使用getset来访问属性。此外,如果计算属性依赖于其他属性,则必须在property声明中添加这些属性。在下一版本的ember中可以省略cacheable的使用,请参阅discussion。您可以看到一个有效的示例here

reverse: function(){
    return this.get('content').toArray().reverse();
}.property('content.@each').cacheable()

您还可以在数组上使用unshiftObject方法,从而避免创建计算属性,请参阅http://jsfiddle.net/ez7bV/