我在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()方法来反转它,但它无法正常工作。我做错了吗?
答案 0 :(得分:7)
您应始终使用get
和set
来访问属性。此外,如果计算属性依赖于其他属性,则必须在property
声明中添加这些属性。在下一版本的ember中可以省略cacheable
的使用,请参阅discussion。您可以看到一个有效的示例here。
reverse: function(){
return this.get('content').toArray().reverse();
}.property('content.@each').cacheable()
您还可以在数组上使用unshiftObject
方法,从而避免创建计算属性,请参阅http://jsfiddle.net/ez7bV/。