我有一个jsbin:http://jsbin.com/watab/6/
这是我最终目标的简化版本。基本上我需要在hasMany关联中排序数据。
如果用户有多个图书,我想要对图书进行排序以便显示{{#each book in books}}
,那么我该如何对它们进行排序?
我正在做的是setupController
期间的用户路线我设置了图书控制器的内容。
this.controllerFor('books').set('content', model.get('books'));
现在在Users控制器中我设置了课程的需求
needs: ['books']
并设置别名
books: Ember.computed.alias('controllers.books.content')
现在我有书籍控制器
App.BooksController = Ember.ArrayController.extend({
sortProperties: ['name'],
sortAscending: false
});
然而,当我执行{{#each book in books}}
时,它永远不会被排序。
jsbin http://jsbin.com/watab/6/并不是我所描述的,但它采用了我在此描述的基本思想。
除了我将sortAscending
更改为true
之外,这与jsbin http://jsbin.com/watab/7/相同。我得到了相同的结果......
谢谢!
答案 0 :(得分:1)
好的,当你在'指数'中时,以http://jsbin.com/watab/6/为例,举出JSBin的例子。模板,你当前的控制器是' IndexController',没关系。在那个控制器中,你有一个属性'用户',这很好;但是,即使你在UsersController中定义了排序选项,该属性也没有排序,该属性不会被排序,为什么?,控制器是你的模型的装饰器,所以,你放的代码每当你去“用户”时,排序都会有效。然后,用户将在那里进行排序,这就是为什么它不能在你的“IndexController”中工作,因为数据没有排序。要对它进行排序,有几种方法,但我喜欢这个,在你的IndexController'中添加这些属性:
userSortProperties: ['name:desc'],
sortedUsers: Ember.computed.sort('users', 'userSortProperties')
并将模板更改为:
{{#each user in sortedUsers}}
<div>{{user.name}}</div>
{{/each}}
我希望你明白这一点。