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コントローラーの計算されたプロパティに 2 番目のプロパティを追加するのを忘れました。

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 に答える