我有一个我为我的模型获取的product-tag列表。
路线:
model: function() {
return {
product_tags: this.store.find('product-tag', {merchant: merchId})
}
}
我有一个为模型添加标签的组件,但是当我创建记录并将其推入模型后(如其他帖子所示),我的UI仍然没有更新。
addTag: function(name) {
tag = this.store.createRecord('product-tag', {
name: name
});
this.model.product_tags.toArray().addObject(tag);
tag.save();
}
//model merchant.js
export default DS.Model.extend({
user_id: DS.attr('number'),
product_tags: DS.hasMany('product-tag', {async: true})
});
//model product-tag.js
export default DS.Model.extend({
merchant: DS.belongsTo('merchant'),
name: DS.attr('string'),
});
我做错了什么?提前致谢。
答案 0 :(得分:-1)
你应该在路线中制作数组,所以你可以随后使用它,就像你想要的那样。你调用toArray()创建一个新的Array实例,然后你的模型没有挂钩到刚刚制作的数组。
model: function() {
return {
product_tags: this.store.query('product-tag', {merchant: merchId}).then(function(pt) {
return pt.toArray();
});
}
}
var x = this.get('model.product_tags') === model's p_t // true
var y = this.get('model.product_tags').toArray() === model's p_t // false
稍后再做
addTag: function(name) {
this.get('store').createRecord('product-tag', {
name: name
}).save().then(function(saved){
this.get('model.product_tags').pushObject(saved);
}.bind(this);
}