自升级到Ember2.4以来,渲染子模板中的操作未冒泡到路由

时间:2016-03-03 16:04:27

标签: javascript ember.js

我刚刚将我的应用程序从最新的Ember 1.13(没有任何弃用)更新为Ember 2.4。现在我遇到的问题是某些动作不再冒泡了。我有以下设置:

路由/ foo.js

export default Ember.Route.extend({
    actions:
        doSomething: function() {
            console.log("action triggered!");
        }
});

模板/ foo.hbs

{{render "foo.bar"}}

模板/富/ bar.hbs

<div {{action "doSomething"}}>Test</div>

控制器/富/ bar.js

export default Ember.Controller.extend({
});

使用Ember 1.13,当我点击Test时,doSomething中的操作routes/foo.js被触发。现在这不再发生了。如果我向doSomething添加操作controllers/foo/bar.js,则会触发此操作,但它不会冒泡到基础根。我检查了所有关于新ember版本的博客帖子,但我发现没有任何暗示行动的冒泡被改变以及如何修复它。任何帮助都会很棒!

1 个答案:

答案 0 :(得分:0)

基于 http://marinasol.com/panoramas/Courtyard_Pano_Auto/_auto/flash/scene/pano_1/0_2_1_3.jpg ,渲染助手只能访问自己的控制器,而不能访问父控制器。但是您可以使用路径中的render方法渲染到指定的插座并获得所需的行为。

App.FooRoute = Ember.Route.extend({
  renderTemplate: function() {
    this.render();
    this.render('bar', {
      into: 'foo',
      outlet: 'bar',
    });
  },
  actions: {
    doSomething: function() {
      alert('Done');
    }
  }
});

<script type="text/x-handlebars" data-template-name="foo">
  {{outlet 'bar'}}
</script>

<script type="text/x-handlebars" data-template-name="bar">
  <button {{action 'doSomething'}}>Do Something</button>
</script> 

<强> render documentation