使用Ember.set更改值,获取我必须使用Ember.set的错误

时间:2016-08-18 09:54:16

标签: ember.js ember-data ember-cli

在我的应用程序中,我必须使用另一个对象(updatedEvent)中的数据更新记录(eventToUpdate)。为此,我使用以下代码:

editEvent (updatedEvent, eventToUpdate) {
  eventToUpdate.set('name', updatedEvent.name);
  eventToUpdate.set('matching', updatedEvent.matching);
  eventToUpdate.set('dcfEvent', updatedEvent.dcfEvent);

  eventToUpdate.save().then(() => {
    toastr.success('Event updated');
  }).catch((error) => {
    toastr.error('There occured an error while trying to update the event');
    console.log(error);
  });
},

当我尝试更新事件时,出现以下错误:

Assertion Failed: You must use Ember.set() to set the `name` property (of [object Object]) to `DCF tests`."

我也尝试使用Ember.set设置值,如下所示:

Ember.set(eventToUpdate, 'name', updatedEvent.name);

但是这给出了相同的结果..

我使用Ember.js 1.13

2 个答案:

答案 0 :(得分:2)

似乎eventToUpdate不是Ember Object而且有人在看这个属性。因此,请使用Ember.set设置值:

editEvent (updatedEvent, eventToUpdate) {
  Ember.set(eventToUpdate, 'name', updatedEvent.name);
  Ember.set(eventToUpdate, 'matching', updatedEvent.matching);
  Ember.set(eventToUpdate, 'dcfEvent', updatedEvent.dcfEvent);

  eventToUpdate.save().then(() => {
    toastr.success('Event updated');
  }).catch((error) => {
    toastr.error('There occured an error while trying to update the event');
    console.log(error);
  });
},

答案 1 :(得分:0)

问题在于我的数据结构。我试图编辑子事件,这是根事件的一部分。通过首先从后端加载单个子事件然后编辑该单个子事件来解决该问题。看起来有点像这样:

var event = this.store.findRecord('event', subevent.id);
event.set('name', updatedEvent.name);
event.set('matching', updatedEvent.matching);

event.save().then(() => {
  toastr.success('element successfully updated');
}).catch((error) => {
  console.log(error);
});