ArrayController排序 - 每个语句 - 模型

时间:2015-03-16 17:36:15

标签: javascript ember.js

我一直在尝试根据代码学校的ember教程制作一个新的图书馆应用程序(书籍代替产品......不太复杂)。

我正在使用最新的ember.js稳定版本,1.1.10。

在我的模板中使用 {{#each}}

JS:

App.BooksRoute = Ember.Route.extend({
    model: function () {
        return this.store.findAll('book');
    }
});

HTML:

{{#each}}
    <h1>{{title}}</h1>
{{/each}}

控制台中显示以下警告

DEPRECATION: Using the context switching form of {{each}} is deprecated. Please use the keyword form (`{{#each foo in bar}}`)

所以我一直在尝试使用推荐的语法,我发现了这个,这是有效的 HTML:

{{#each book in model}}
    <h1>{{book.title}}</h1>
{{/each}}

但到了我的 arrayController 中的 sortProperties 时,我的 {{#each book in model}} < / p>

JS:

App.BooksRoute = Ember.Route.extend({
    model: function () {
        return this.store.findAll('book');
    }
});

App.BooksController = Ember.ArrayController.extend({
    sortProperties: ['title']
});

HTML:

{{#each book in model}}
    <h1>{{book.title}}</h1>
{{/each}}

我的书没有排序......

我找到了另一种解决方法,在我的ArrayController中构建一个属性:

JS:

App.BooksRoute = Ember.Route.extend({
    model: function () {
        return this.store.findAll('book');
    }
});

App.BooksController = Ember.ArrayController.extend({
    books: function(){
        return this;
    }.property(),
    sortProperties: ['title']
});

HTML:

{{#each book in books}}
    <h1>{{book.title}}</h1>
{{/each}}

它已经分类了! ,但我不满意......

是否有另一种最简洁/最简单的方法来使用ember 1.1.10中定义的每个语句并对我的数组进行排序?

2 个答案:

答案 0 :(得分:0)

而不是{{#each book in model}} 使用{{#each book in arrangedContent}}{{#each book in this}}

答案 1 :(得分:0)

尝试使用&#39; arrangeContent&#39;让你的数组在ArrayController中排序。

App.BooksController = Ember.ArrayController.extend({
    sortProperties: ['title'],

    content: function() {
        return this.get('arrangedContent'); // this gives sorted array
    },
});

希望这有帮助