Ember.js 添加元素时,数组上的计算属性未更新
我目前正在使用computed属性根据数组的顺序对模型中包含的数组进行排序(这在Ember.js 添加元素时,数组上的计算属性未更新,ember.js,ember-data,ember-cli,Ember.js,Ember Data,Ember Cli,我目前正在使用computed属性根据数组的顺序对模型中包含的数组进行排序(这在幻灯片组控制器中): “幻灯片组”包含有序幻灯片的列表。这适用于重新排列元素以及删除幻灯片。但是,如果我添加了一张新幻灯片,该属性将不会被触发,也不会出现 以下是我创建新幻灯片的保存方法: actions: { save: function() { var slideGroup = this.modelFor('slide-group'); var model =
幻灯片组
控制器中):
“幻灯片组”包含有序幻灯片的列表。这适用于重新排列元素以及删除幻灯片。但是,如果我添加了一张新幻灯片,该属性将不会被触发,也不会出现
以下是我创建新幻灯片的保存方法:
actions: {
save: function() {
var slideGroup = this.modelFor('slide-group');
var model = this.modelFor('slide-group.new-slide');
model.set('slideGroup', slideGroup);
model.save();
this.get('controller').transitionToRoute('slide-group.index');
},
}
我还尝试将'slides'
添加到属性()为什么添加新幻灯片时计算属性不更新?
版本信息:
余烬:v1.7.0
余烬CLI:v0.0.41
编辑:以下是我的模型,仅供参考:
slide.js:
export default DS.Model.extend({
slideGroup: DS.belongsTo('slide-group'),
name: DS.attr('string'),
order: DS.attr('number'),
widgetType: DS.attr('string'),
duration: DS.attr('number'),
parameters: DS.attr()
});
slide-group.js:
export default DS.Model.extend({
name: DS.attr('string'),
description: DS.attr('string'),
screens: DS.hasMany('screen', {async: true}),
slides: DS.hasMany('slide', {async: true})
});
它可能不适用于您正在执行的操作,但我发现,在开始使用特定于余烬的pushObject和popObject调用之前,我无法获取要更新的数组-也许可以尝试属性('slides.@each.order','slides.[]')
@torazaburo,但这也不起作用,但这确实让我感到疑惑:我只是保存了一张新幻灯片并为其分配了一个幻灯片组,但我并没有直接在幻灯片组上修改幻灯片数组。我是否需要更新双方的关系才能正确更新?我还包括了上面的模型。@sunrize920如果我同时更新模型的两侧,它看起来确实有效:slideGroup.get('slides').pushObject(模型)代码>关于我的保存操作。是否真的有必要更新模型的两面?应该更新,不清楚为什么不更新。但是,要验证创建新幻灯片会更新slideGroup
模型的slides
属性这一假设应该很容易,因为我很确定它应该这样做。
export default DS.Model.extend({
name: DS.attr('string'),
description: DS.attr('string'),
screens: DS.hasMany('screen', {async: true}),
slides: DS.hasMany('slide', {async: true})
});