我有一个包含多个页面的流程,当我使用'transitionTo'返回已经显示的路径/视图时,它的'didInsertElement'方法不会被调用。 (虽然第一次显示视图时它被触发了)
是否有一个我的视图可以挂钩的事件,每次显示时都会被调用?
我的路线看起来像这样
App.Router.map(function() {
this.resource("parent", { path: "/parent" }, function() {
this.resource("child", { path: "/child" });
});
});
所以,当我在孩子视野中并致电:
this.transitionTo('parent')
父视图不会触发'didInsertElement'。
答案 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插件。如果你试图做更多的应用程序逻辑,它可能属于其他地方。