0

我有这个工作jsfiddleEmBlog.PostsEditRoute有一个destroyPost 事件,我想在 EmBlog.PostsShowRoute 的模板 'post/show.hbs' 中使用动作助手调用该事件

我正在使用#with 帮助器按照此处的建议更改模板中的范围。它不会破坏对象并且不会引发错误。

 <script type="text/x-handlebars" data-template-name="posts/show">
   {{#with EmBlog.PostsEditController}}
      <a href='#' {{action destroyPost this}}> Destroy</a>
   {{/with}}
 </script>

 EmBlog.PostsShowRoute = Ember.Route.extend({

 });

 EmBlog.PostsEditRoute = Ember.Route.extend({
    events: {
      destroyPost: function(context) {
       var post = context.get('content'); 
        post.deleteRecord();
        post.get('store').commit();
        this.transitionTo('posts');
      }
    }
 });
4

1 回答 1

1

我认为这基本上是因为EmBlog.PostsShowRoute如果您希望它可以在其他 PostsXXX 视图中访问,您必须在 PostsRou​​te 或 PostsRou​​te 中定义您的事件处理程序。有关详细信息,请参阅http://emberjs.com/guides/templates/actions/

(顺便说一句,这里使用#with 助手似乎是错误的,因为您的参考是关于一些相当古老的东西)。我会简单地做

<script type="text/x-handlebars" data-template-name="posts/show">
  <a {{action destroyPost content}}> Destroy</a>
</script>

这是修改后的小提琴:http: //jsfiddle.net/Qn3ry/4/

请注意,当您尝试销毁固定装置中的帖子时,它会在您转换到帖子/索引时重新出现。这只是因为 post 在fixtures 中没有被销毁,当进入 PostIndexRoute 时,App.Post.find() 会重新加载它。

于 2013-01-21T16:07:11.490 回答