Abh*_*L R 11 ember.js ember-data ember-cli
每个google结果都与ArrayController排序有关.需要一个排序机制而不使用ArrayController.
有一个模型,其中有排序参数.就像说'sortOrder'作为模型中的一个属性(它将来自后端).
将使用#each渲染此模型,但这应该基于sortOrder属性而不是模型的ID属性进行迭代.
mp3*_*415 31
在Ember 2.0 SortableMixin中已被弃用,并且即将推出.
在Controller(不是ArrayController)你可以定义一个新的计算属性,如下SortedUsers1,2,3所示:
export default Ember.Controller.extend({
sortProps: ['lastName'],
sortedUsers1: Ember.computed.sort('model', 'sortProps'),
sortedUsers2: Ember.computed.sort('content', 'sortProps'),
sortedUsers3: Ember.computed('content', function(){
return this.get('content').sortBy('lastName');
})
});
Run Code Online (Sandbox Code Playgroud)
上面的假设是模型本身是具有lastName用户属性之一的用户数组.依赖'model'和'content'看起来等同于我.上面的所有三个计算属性都生成相同的排序列表.
请注意,您不能'sortProps'用'lastName'in 替换参数sortedUsers1,2- 它将无法工作.
要更改排序顺序,请修改sortProps为
sortProps: ['lastName:desc']
Run Code Online (Sandbox Code Playgroud)
此外,如果您的模板位于users/index文件夹中,那么您的控制器也必须在那里.即使路由加载模型在users /中,用户/中的控制器也不会这样做.
在模板中,使用情况与预期一致:
<ul>
{{#each sortedUsers1 as |user|}}
<li>{{user.lastName}}</li>
{{/each}}
</ul>
Run Code Online (Sandbox Code Playgroud)
这是我如何手动排序(使用ember比较)
import Ember from "ember";
import { attr, Model } from "ember-cli-simple-store/model";
var compare = Ember.compare, get = Ember.get;
var Foo = Model.extend({
orderedThings: function() {
var things = this.get("things");
return things.toArray().sort(function(a, b) {
return compare(get(a, "something"), get(b, "something"));
});
}.property("things.@each.something")
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
9558 次 |
| 最近记录: |