我正在玩ember入门套件bloggr,只是为了熟悉它的内容。
在帖子部分,我希望能够创建一个新帖子。这是根据原始代码的相关更改。
App.PostsRoute = Ember.Route.extend({ model: function() {
return posts; },
events: {
createPost: function(){
var posts = this.modelFor('posts');
var post = posts.pushObject({
id: posts.length
});
this.transitionTo('/edit', post);
}
}});
并在
时触发事件 <tr><th><a href="#" {{action createPost}}>New Post</a></th></tr>
<tr><th>Recent Posts</th></tr>
如果你尝试创建一个新帖子,显然有一个新的帖子实例(0和1是硬编码的,所以你得到post id = 2)但是没有渲染编辑模板。 要做的事情的唯一方法是首先加载0或1后,然后点击新的(只有“ ”可见)并编辑它。
我想要实现的是获取模板的全新编辑实例,以便我可以为新创建的帖子设置字段。
有什么建议吗?
答案 0 :(得分:2)
G'day Daniel
这里你去jsbin正在发挥作用。
为了实现这一点,我添加了Ember Data和灯具适配器
App.ApplicationAdapter = DS.FixtureAdapter;
然后我将示例附带的post对象转换为fixture数据。
App.Post.FIXTURES = [{
title: "Rails is Omakase"
}, {
title: "The Parley Letter"
}];
接下来,我添加了一个新的帖子路径。
App.Router.map(function() {
this.resource('about');
this.resource('posts', function() {
this.route('new');
this.resource('post', { path: ':post_id' });
});
});
然后添加了与该新路线的链接。
{{#link-to 'posts.new'}}New Post{{/link-to}}
在PostsNewRoute
模型钩子中,我创建了一个'帖子'。该模板使用{{partial 'post/edit'}}
重用编辑表单。
以下是显示保存操作的PostsNewRoute代码。
App.PostsNewRoute = Ember.Route.extend({
model: function() {
return this.get('store').createRecord('post');
},
actions: {
save: function() {
this.modelFor('postsNew').save();
this.transitionTo('posts.index');
}
}
});
如果您还有其他问题,请与我们联系。
干杯