【问题标题】:Using Ember data's find in route setupController in Ember 1.0.0在 Ember 1.0.0 的路由 setupController 中使用 Ember 数据查找
【发布时间】:2013-09-06 09:27:38
【问题描述】:

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

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

有什么提示吗?

【问题讨论】:

  • 糟糕,这只是一个复制粘贴错误,我从两个相似的文件中复制。它是 OfferEditController。对不起!我已经更新了帖子。
  • 您使用的是哪个版本的 Ember Data?测试版 1?
  • @colymba 没有仍然在 Ember.data 0.13
  • 您是否检查过该属性是否实际被填充?试试App.__container__.lookup("controller:offerEdit").get("offerTemplates.length")
  • @mavilein 是的,它是从服务器的 API 中获取并填充的。结果:12(这是正确数量的 offerTemplates)

标签: ember.js ember-data


【解决方案1】:

问题与不使用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 中工作。

【讨论】:

  • 可能在 Ember 中发生了细微的时间变化。在 RC7 中,我猜这个属性是在正确的时间偶然计算出来的。
  • @mavilein 是的,这可能是解释。感谢您的帮助!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-07-29
  • 1970-01-01
  • 1970-01-01
  • 2015-02-21
  • 1970-01-01
相关资源
最近更新 更多