Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ember.js/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ember.js ember数据数组UI未在pushObject上更新_Ember.js_Ember Data - Fatal编程技术网

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不是不可变的,我们在某些地方使用这种方法。