0

私はこの動作するjsfiddleを持っています。EmBlog.PostsEditRouteには、EmBlog.PostsShowRouteのテンプレートである「post/show.hbs」のアクションヘルパーで呼び出したいdestroyPostイベントがあります。

ここで提案されているように、#withhelperを使用してテンプレートのスコープを変更しています。オブジェクトを破壊せず、エラーもスローしません。

 <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でイベントハンドラーを定義する必要があるためだと思います。詳細については、 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/

フィクスチャにある投稿を破棄しようとすると、投稿/インデックスに移行したときに再表示されることに注意してください。これは、ポストがフィクスチャで破棄されていないためであり、PostIndexRouteに入ると、App.Post.find()が再びリロードします。

于 2013-01-21T16:07:11.490 に答える