Ember canary“Uncaught Error:Assertion Failed:你只能在此关系中添加'里程碑'记录”

时间:2014-03-02 13:16:28

标签: ember.js

我有以下控制器:

Filters.FiltersController = Ember.ArrayController.extend({
    needs: ["milestones"],
    selectedMilestone: null,
    selectedMilestoneChange: function() {
        if(!this.get('filterTypeSelected') || !this.get('selectedMilestone')) {
            return;
        }
        var filter = this.store.createRecord('filter', {
            type: 'milestone',
            value: this.get('selectedMilestone').get("id"),
            negate: this.get('filterTypeSelected').negate,
            milestone: this.store.find('milestone', this.get("selectedMilestone").get("id"))
        });
        filter.save();
        this.resetFilterCreator();
    }.observes('selectedMilestone')
});

每当视图更改selectedMilestone属性时,它都会创建一个新的filter实例并保存它。

直到我升级到Ember-canary才能使用query-parameters-new功能。升级后,无论何时创建过滤器记录,都会引发以下错误:

  

未捕获错误:断言失败:您只能在此关系中添加“里程碑”记录

错误源自

milestone: this.store.find('milestone', this.get("selectedMilestone").get("id"))

模型是:

Filters.Filter = DS.Model.extend({
    type: DS.attr('string'),
    value: DS.attr('string'),
    milestone: DS.belongsTo('milestone'),
    negate: DS.attr('boolean')
});

我如何使这项工作?

1 个答案:

答案 0 :(得分:4)

问题是(显然在较新的Ember版本中),this.store.find(...)的回报是承诺,因此不是instanceof Milestone

相反,您可以解决承诺或使用this.store.getById('model', 'id')。但是,这需要已经检索到模型(在我的情况下它是onLoad。)