這是一個jsfiddle演示:http://jsfiddle.net/YUHLA/5/Ember.js - 爲什麼this.get('model')返回一個控制器?
這是我試圖找出創建新記錄的正確模式時遇到的問題。我無法獲得新創建的記錄,我在路上遇到了一些奇怪的行爲。
打開控制檯,嘗試添加新帖子並保存。注意三點奇的出現:在控制器上
- 調用get(「模型」)上線62
- 返回控制線65上,它證明了沒有新的模型保存到燈具。
- 從帖子控制器創建另一個帖子並保存後,這兩個帖子都被保存(第70行)。
這裏的JavaScript:
window.App = Ember.Application.create();
App.Store = DS.Store.extend({
adapter: DS.FixtureAdapter
});
App.store = App.Store.create();
App.Post = DS.Model.extend({
title: DS.attr('string'),
body: DS.attr('string')
});
App.Post.FIXTURES = [
{
id: 1,
title: 'title',
body: 'body'
}, {
id: 2,
title: 'title two',
body: 'body two'
}
];
App.NewPostFormView = Ember.View.extend({
tagName: "form",
templateName: "newPostForm",
submit: function() {
this.get('controller').save();
return false;
}
});
App.ApplicationController = Ember.ObjectController.extend({
posts: (function() {
return App.Post.find();
}).property()
});
App.PostsController = Ember.ArrayController.extend({
sortProperties: ['id'],
sortAscending: false,
itemController: 'post',
newPost: function() {
var post;
return post = App.Post.createRecord({
title: '',
body: '',
isEditing: true
});
}
});
App.PostController = Ember.ObjectController.extend({
save: function() {
var temp;
console.log('Starting to save');
console.log('this.get(\'model\') =', this.get('model'));
transaction = App.store.transaction();
this.set('isEditing', false);
temp = this.get('model');
temp.get('store').commit();
Ember.run.next(function(){
console.log('# fixtures:', App.Post.FIXTURES.length);
App.Post.createRecord(
{title: 'post four', body: 'four body'}
).get('store').commit()
Ember.run.next(function(){
console.log('# fixtures:', App.Post.FIXTURES.length);
});
});
}
});
這是否與我是從崗位控制器創建模型,然後將其保存在控制器後的事實呢?如果是這樣,我該如何解決這個問題?
謝謝!
感謝您的答覆。 'this.get('model')。save()'實際上並沒有向後端發出'POST'請求......這應該是這種情況嗎?我用一個事務創建了一個新的小提琴,它在小提琴上工作,但在我的應用程序中,同樣的過程未能發出後端的POST請求。 http://jsfiddle.net/YUHLA/9/ – tobobo
啊,事實證明,我的問題與在父模型的後期模型中指定「embedded:always」有關。切換到「嵌入:加載」允許我單獨保存後期模型。現在我只需解決與POST請求中使用的密鑰相關的一些謎題,以及它們是否附加了_id。 – tobobo
太棒了,很高興工作。 Re:使用的鍵,最適合看的地方是REST適配器的單元測試。只要看看爲每種類型的請求傳遞的ajax散列。 https://github.com/emberjs/data/blob/master/packages/ember-data/tests/unit/rest_adapter_test.js –