【发布时间】:2014-08-03 00:19:52
【问题描述】:
我有一个待办事项列表。
主模板有一个用于输入新待办事项的输入和一个出口。
出口用于显示每个待办事项的 todos.index 模板。我使用 jquery 可排序使它们成为 srtable。我使用模型属性对它们进行排序。
待办事项路线:
model: function(){
return this.store.filter("todo", {}, function(todo){
if(todo.get("user") !== null && parseInt(todo.get("user").get("id")) === user_id)
return todo;
});
todos 索引路由:
model: function(){
return this.modelFor('todos').sortBy('idx');
}
控制器:
App.TodosController = Ember.ArrayController.extend();
App.TodosIndexController = Ember.ObjectController.extend();
但是当我添加这个 .sortBy() 方法时,我返回的对象数组不再存在,并且我创建的任何新 todos 都没有添加到模板中。 (它们确实被创建并且在 ember 数据和我的数据库中,但它们只是没有被添加到模板中) - 当您执行 sortBy 时,ember 数据的实时数组被复制到不可变的常规数组中。
如果我省略 sortBy() 我的新对象会很好地填充我的模板。
关于如何对数组进行排序但保持其可枚举或如何刷新模板的任何想法?
sortProperties 不工作 - 我不知道为什么。我的待办事项列表由 objectController 填充。
编辑 -
我的问题是我自己的错。我以为我有这个
App.TodosIndexController= Ember.ObjectController.extend();
但我真正拥有的是:
App.TodoController = Ember.ObjectController.extend();
这让我没有明确的控制器来为我进行排序,所以对我来说解决方案是创建一个新的 arrayController:
App.TodosIndexController= Ember.ObjectController.extend();
并使用它来进行排序。虽然这不是我问题的解决方案,但我的问题是我自己的遗忘,这是对项目进行排序的正确方法,所以我将@Kingpins 的答案标记为正确。
【问题讨论】:
标签: javascript jquery arrays sorting ember.js