Ember.js ember数据数组UI未在pushObject上更新
我有一个我为我的模型取回的产品标签列表 路线:Ember.js ember数据数组UI未在pushObject上更新,ember.js,ember-data,Ember.js,Ember Data,我有一个我为我的模型取回的产品标签列表 路线: model: function() { return { product_tags: this.store.find('product-tag', {merchant: merchId}) } } 我有一个组件可以向模型中添加标记,但是当我创建记录并将其推送到模型中(正如其他帖子所建议的那样)之后,我的UI仍然没有更新 addTag: function(name) { tag = this.store.createRecord
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'),
});
我做错了什么?提前谢谢 你应该在路径中设置数组,这样你以后就可以随心所欲地使用它了。调用toArray()生成一个新的数组实例,那么您的模型就不会连接到刚才生成的数组
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);
}
您使用的是什么版本的余烬和余烬数据?这里的整个方法都是错误的ember:1.13.7 ember数据-“1.13.8”你能添加你的
产品标签
模型和你的商家
模型吗,它们之间的关系是什么?你从哪里获得merchId
数据?嗯,他可能使用嵌套路径,并通过助手发送它。e、 g“link.to”不,只是不,绝对没有理由将模型放入数组,还应该对变量进行camelCase处理product tag
和tag
应该有一对多的关系,this.store.createRecord('product-tag',{product:product,tag:tag}
已经足够了,你不应该在查询参数中使用find,因为,你应该抛出警告和jshint错误。这些不是我的变量,我也不是在质疑他构建模型和后端查询的方式。我只是来让这件事按照他想要的方式进行。关于store.find.c,你是对的挂起它进行查询。他想要的方式是可怕的错误,你不应该升级它。我的模型返回一个“”我认为它是不可变的。这样做的正确方式是什么?除了使用toArray()然后将我的模型设置为数组外?@imahung不是不可变的,我们在某些地方使用这种方法。