我正在评估EmberJs的一个项目并通过Tom Dale的余烬截屏工作。但我没有使用Ember Data并且我正在尝试调整我们的内容(本例中为Post对象)。
在Ember Data模型中,他使用this.get('store')。commit()来保存并持久保存到服务器。我试图在Post模型上获取一个保存对象,并在用户单击应触发save
方法的按钮时调用它。我该怎么做?我试过的是在底部(this.save,this.model.save,this.post.save),但已经包含了几乎所有的代码。此外,这种一般方法是否合理?
请求帮助
window.Hex = Ember.Application.create();
Hex.Router.map(function() {
this.resource('posts', function(){
this.resource('post', { path: ':post_id' });
});
});
// the model class
Hex.Post = Ember.Object.extend({
save: function(){ a
console.log("you clicked save");
}
});
Hex.PostRoute = Ember.Route.extend({
model: function(params) {
return $.getJSON("/arc/v1/api/all-post", function(data){
var post = Hex.Post.create();
post.set('id', data.id);
return post;
});
}
});
Hex.PostController = Ember.ObjectController.extend({
isEditing: false,
actions:{
edit: function() {
this.set('isEditing', true);
console.log("within edit");
},
doneEditing: function() {
this.set('isEditing', false);
this.save(); // doesn't work trying to get a reference to the post object
this.model.save(); // doesn't work - undefined
this.post.save(); // doesn't work - undefined
//this.get('store').commit(); what is called in the sample app
}
}
});
答案 0 :(得分:0)
我们在工作时使用的是没有EmberData的Ember。我们通常将任何与请求相关的逻辑放在ActiveRecord模式之后的模型中。所以我们路线中的模型钩子通常看起来像这样:
Hex.PostRoute = Ember.Route.extend({
model: function(params) {
return Post.find(params); // returns a promise
}
});
你的问题非常简单。在控制器内部,您可以使用content
属性访问模型,因此您必须使用以下内容:
this.get('content').save();
我认为save方法也会返回一个承诺。 希望它有所帮助!