EmberJS - 之前显示的视图的didInsertElement

时间:2013-06-05 00:30:06

标签: ember.js

我有一个包含多个页面的流程,当我使用'transitionTo'返回已经显示的路径/视图时,它的'didInsertElement'方法不会被调用。 (虽然第一次显示视图时它被触发了)

是否有一个我的视图可以挂钩的事件,每次显示时都会被调用?

我的路线看起来像这样

App.Router.map(function() {
    this.resource("parent", { path: "/parent" }, function() {
        this.resource("child", { path: "/child" });
    });
});

所以,当我在孩子视野中并致电:

this.transitionTo('parent')

父视图不会触发'didInsertElement'。

3 个答案:

答案 0 :(得分:1)

我发现我可以在路线中使用setupController,每次路线渲染时都会通知我。我知道这不是最好的解决方案,但到目前为止,它是最可靠的。

答案 1 :(得分:0)

父项已经呈现,因为子项呈现在父项的插座内。当您转换回父视图时,您想要做什么?可能有更好的方法来做你想要的事情

答案 2 :(得分:0)

如果您的路线是嵌套的,那么您的模板也应该是。所以我希望你的模板看起来像这样:

<script type="text/x-handlebars" data-template-name="parent">
  <!-- Your parent View stuff -->

  {{outlet}} <!-- This is where your child gets rendered
</script>

因此您的父视图内容已经插入并保持插入状态。当你转入/退出父母时,它不应该去任何地方。

在转换回父级之后,您究竟想要做什么,以及需要didInsertElement。 didInsertElement钩子实际上是用于较低级别的dom操作,比如设置jQuery插件。如果你试图做更多的应用程序逻辑,它可能属于其他地方。