2016-08-18 30 views
0

在我的應用程序中,我必須更新記錄(eventToUpdate)與來自另一個對象(updatedEvent)的數據。要做到這一點,我使用下面的代碼:使用Ember.set來更改一個值,得到的錯誤,我必須使用Ember.set

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

+1

你確定eventToUpdate是記錄嗎?你請提供console.log(eventToUpdate)... Ember.set應該可以解決Assertion錯誤。 – kumkanillam

回答

1

看來,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); 
    }); 
}, 
+0

我也嘗試過這種解決方案,但結果相同..我將它添加到帖子中。 –

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); 
}); 
+0

findRecord返回Promise。 – kumkanillam

相關問題