[英]can't save/update record using ember-data
我的路由器定義以下內容:
this.resource('uoms', { path: '/uoms' }, function() {
this.route('new');
});
uoms
路由定義為:
App.UomsRoute = Ember.Route.extend({
model: function() {
return this.store.find('uom');
},
actions: {
save: function() {
this.modelFor('uoms').save().then(function() {
console.log("saved UOMs");
});
}
}
});
但是由於某種原因,當我嘗試保存它時,我得到了:
未捕獲的TypeError:對象[object Object]沒有方法'save'
有人可以幫助我確定我在做什么錯嗎?
----更新----
我還從控制器嘗試了以下操作,但結果相同:
App.UomsController = Ember.ArrayController.extend({
actions: {
save: function() {
this.get('model').save().then(function() {
console.log("saved UOMs");
});
}
}
});
----更新2 ----
查看this.get('model')
調用返回的對象,我們得到以下信息:
這就是我要做的:
this.get('model')
。 檢查控制台輸出是否確實是您期望的。 很有可能不是您要保存的模型實例。 您將在控制台中執行this.get('model').save()
時看到相同的錯誤。
順便說一句:為什么要使用ArrayController
而不是ObjectController
。 看起來您將其用於單個模型。 有關更多詳細信息,請參閱文檔 。
編輯:
試試this.get('model').get('transaction').commit()
我遇到的問題是我試圖在記錄數組而不是單個記錄上調用save()
。 出現此問題的原因是,我正在對單個記錄進行操作,但在ArrayController
執行了此操作。 我認為這沒有什么錯,盡管可以說我應該創建一個名為“ edit”的子路由,然后假定我的代碼邏輯會起作用。
就是說,如果您想像我一樣做(也就是在ArrayController中保存單個記錄),那么此代碼將起作用:
save: function(id) {
var promise = this.store.find('uom',id).then(function(uom){
console.log(uom);
uom.save();
});
}
然后在模板中輸入如下內容:
<span class="glyphicon glyphicon-floppy-disk" {{action "save" id}}></span>
這有效,但不是最佳答案。 相反,你可以在指定ArrayController
的ObjectController
與itemController
財產。 下面是使用此策略的save()
和deleteRecord()
處理程序的示例:
App.PluralController = Ember.ArrayController.extend({
itemController: 'singular'
});
App.SingularController = Ember.ObjectController.extend({
actions: {
save: function() {
this.get('model').save();
},
deleteRecord: function() {
this.get('model').deleteRecord();
this.get('model').save();
}
}
});
然后,您需要對車把模板執行以下操作:
<span class="glyphicon glyphicon-floppy-disk" {{action "save" this}}></span>
<span class="glyphicon glyphicon-remove-circle" {{action "deleteRecord" this}}></span>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.