1

我有一个包含多个页面的流程,当我使用“transitionTo”返回到已经显示的路线/视图时,它的“didInsertElement”方法未被调用。(不过,它在第一次显示视图时被触发)

是否存在我的视图可以挂钩的事件,每次显示时都会调用它?

我的路线看起来像这样

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

因此,当我在子视图中并调用时:

this.transitionTo('parent')

父视图不会触发“didInsertElement”。

4

3 回答 3

1

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

于 2013-08-15T23:53:21.290 回答
0

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

于 2013-06-05T01:18:40.067 回答
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 插件。如果您尝试做更多应用程序逻辑的东西,它可能属于其他地方。

于 2013-06-05T01:22:49.733 回答