Angularjs,IonicFramework - 导航回模态的选项

时间:2015-01-08 11:12:23

标签: angularjs ionic-framework ionic

我正在开展一个项目,我们在页面上有一系列项目。 点击此页面上的每个项目,会打开一个模式,向用户显示一个通向单独控制器和另一个视图的按钮。

当用户点击已加载页面上的后退按钮时,用户将进入阵列页面。我需要按下后退按钮才能查看模态,我已经完成了几个选项:

  1. 将加载的页面转换为覆盖原始模态的模态,因此当用户单击该按钮时,它将打开此按钮,保留原始模态。

  2. 重新连接后退按钮以更改状态以使用$ state.go()。这将需要在每个控制器中。

  3. 篡改$ rootScope.viewHistory,这个选项似乎最黑客。这将读取之前的状态并直接编辑它以使后退按钮引导到其他地方。

  4. 在$ rootScope中有一个后退按钮功能,可以传递两个参数:state和stateParameters。这将检查是否有任何传递给它并相应地改变状态。如果没有传递任何内容,它将使用正常的后退按钮功能。

  5. 利弊

    (1)将此页面转换为模态的主要问题是它需要复制页面,这是因为它需要在两个控制器内,这样我们就不会丢失项目列表页面上的数据它需要可以从自己的控制器中的菜单访问。这可能有用的原因是另一个页面需要以这种方式工作。

    (2)调整后退按钮的主要问题是后退按钮目前只位于一个页面上,即菜单,它是所有其他状态的抽象父状态。这可能意味着我们需要将后退按钮拉到每个页面上以逐页更改其功能。这也可能弄乱了页面在更改状态时如何滑入,因为我不知道从函数中调用滑动方向的任何方法。

    (3)这看起来相当容易,但我不知道这是否有效并且感觉非常黑客

    (4)如果我们要为后退按钮设置$ rootScope函数,我们需要首先调用它,此时,在任何其他控制器之前调用一个控制器,但这可能都会改变一次我们整合推送通知。

    什么被认为是最好的解决方案?我应该在主控制器中进行返工(这可能吗?),它会加载一个基于$ rootScope的后退按钮?有没有办法在不同的控制器中加载模态同时保持原始控制器中的数据?什么是我最好的选择?

1 个答案:

答案 0 :(得分:2)

首先,这是一个笨重的设计模式。如果触发模态,那么从那时起所有UI过渡应该保持局限于模态,这样就不会混淆用户。将模态看作是一种简单地钻进动作而不是导航元素的东西。如果每个数组元素需要多个交互页面,请在模态内部构建它们。你应该能够在自定义指令中解决这个问题。

如果你绝对需要使用模态作为中间体来导航应用程序中的其他地方,我建议缓存触发模态所需的参数(通过本地存储,会话存储,cookie等)。当用户首次触发模态时,存储参数。当您导航到父控制器时,检查是否存在参数,如果它们在那里,则以编程方式触发模态。只要模态关闭/用户从父页面导航回来,就不要忘记从存储中擦除参数。