在Ember 1.0.0中的路由setupController中使用Ember数据的find

时间:2013-09-03 08:17:41

标签: ember.js ember-data

[我在Ember 1.0.0 - Ember.data 0.13]

在嵌套路由中,我使用setupController挂钩来加载我用作模型选择列表的模板列表,Offer对象:

controller.set('offerTemplates', App.OfferTemplate.find());

完整代码:

App.OfferEditRoute = Ember.Route.extend({
    model: function () {
        return this.modelFor("offer");
    },
    setupController: function (controller, model) {
        controller.set('content', model);
        controller.set('offerTemplates', App.OfferTemplate.find());
    },
    renderTemplate: function () {
        this.render('offer-edit-title', { into: 'application', outlet: 'page-title', controller: 'offerEdit' });
        this.render('offer-edit', { into: 'application', controller: "offerEdit" }); //
    }
});

App.OfferEditController = Ember.ObjectController.extend({
    offerTemplates: [],
    ...
)};

这曾经工作到Ember 1 RC 7,但不是1.0.0。 Offer(模型)的主要内容已正确呈现,但绑定到控制器的offerTemplates属性(数组)的模板列表在加载页面时不会呈现(浏览器页面刷新)。

如果我切换页面并返回路径,则所有内容都会正确呈现。

任何提示?

1 个答案:

答案 0 :(得分:0)

问题与不使用offerTemplates数组但计算属性 offerTemplatesByGuestUserLanguage的模板有关:

{{#each offerTemplate in offerTemplatesByGuestUserLanguage}}
    ...
{{/each}}

我忘了第二个在控制器的computed属性中添加第二个属性content.guestUser.language

offerTemplatesByGuestUserLanguage: function() {
    var templates = this.get("offerTemplates"),
        guestUserLanguageCode = this.get("content.guestUser.language.code");

    return templates.filter(function (item) {
        return item.get("language.code") === guestUserLanguageCode;
    });
}.property('offerTemplates.@each', 'content.guestUser.language')

我想知道为什么它甚至可以在RC.7中使用。

相关问题