0

我在玩 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 是硬编码的,因此您得到帖子 id=2),但不会呈现编辑模板。做某事的唯一方法是首先加载帖子 0 或 1,然后单击新帖子(仅由“ by ”可见)并对其进行编辑。

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

有什么建议吗?

4

1 回答 1

2

G'day 丹尼尔

在这里,这个jsbin正在工作。

为了让它工作,我添加了Ember Data和夹具适配器

App.ApplicationAdapter = DS.FixtureAdapter;

然后我将示例附带的 post 对象转换为夹具数据。

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

如果您还有任何问题,请告诉我。

干杯

于 2013-11-10T18:14:37.317 回答