Ionic:从ui-view

时间:2016-08-30 11:45:57

标签: javascript angularjs angularjs-directive ionic-framework

在我们的应用中,我们使用ui-view实现了我们自己的拆分视图,以加载右侧窗格。我们实现了自己的,因为显示侧边菜单的Ionic方式对我们来说还不够。这就是它的样子:

Screenshot

问题是右窗格视图中指定的按钮未添加到header栏,因为该视图不是根ion-view,而是在ui-view内。

这就是我们的拆分视图中DOM的样子:

<ion-nav-view>
  <ion-view> <!-- Left pane ion-view -->
    <mm-split-view> <!-- Our directive -->
      <div class="mm-split-pane-menu"> <!-- Left pane items -->
      <div ui-view="mmaMessagesIndex"> <!-- Right pane container, ui-view -->
        <ion-view> <!-- Right pane ion-view -->
          <ion-nav-buttons> <!-- These buttons aren't shown -->`

我查看了ionNavButtons指令,看到它查找了父ionView,在这种情况下,它不是根ionView。所以我决定创建类似于ionNavButtons的自己的指令,但是使用外部ion-view而不是父指令。

这也有一些问题,因为这依赖于beforeEnterafterEvent事件,当我的右侧视图被加载时,外部视图的事件已经被触发。所以我决定自己触发它:

parentViewCtrl.beforeEnter(undefined, {transitionId: transitionId});

有了这个,我设法让它在我第一次打开视图时工作。但是如果我转到子视图(让我们称之为视图B)然后回来,显示的标题栏是子视图(视图B)中的标题栏,而不是我想要的标题栏(视图A)。如果我使用侧面菜单转到另一个视图(视图C)然后返回到视图A,则会出现相同的情况,看到的标题是来自视图C的标题。

有人知道如何在返回视图时更新header栏吗?

我知道我的解决方案很糟糕,我想没有人会知道如何帮助我,但我很感激有关如何制作这样的工作的任何建议。

一些有用的链接:

Directive I created based on ionNavButtons.

谢谢!

1 个答案:

答案 0 :(得分:0)

我发现了问题,原因是我使用了错误的transitionId。返回视图时会生成一个新的transitionId,我需要使用该beforeEnter。我使用transitionId事件来获取新的Failed to build gem native extension