在Ember中创建新项目

时间:2013-11-10 16:37:29

标签: ember.js

我正在玩ember入门套件bloggr,只是为了熟悉它的内容。

Jsbin

在帖子部分,我希望能够创建一个新帖子。这是根据原始代码的相关更改。

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后,然后点击新的(只有“ ”可见)并编辑它。

我想要实现的是获取模板的全新编辑实例,以便我可以为新创建的帖子设置字段。

有什么建议吗?

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');
      }
    }
  });

如果您还有其他问题,请与我们联系。

干杯