0

[我在 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属性(数组)的模板列表在加载页面(浏览器页面刷新)时未呈现。

如果我切换页面并返回路线,一切都会正确呈现。

有什么提示吗?

4

1 回答 1

0

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

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

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 中工作。

于 2013-09-03T09:15:07.263 回答