【问题标题】:Angularjs, Ionic Framework - Options for navigating back to a modalAngularjs,Ionic Framework - 导航回模式的选项
【发布时间】:2015-01-08 11:12:23
【问题描述】:

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

当用户点击已加载页面上的后退按钮时,它会将用户带到数组页面。我需要按下后退按钮才能查看模式,并且我已经通过了几个选项:

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

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

  3. 篡改$rootScope.viewHistory,这似乎是最骇人听闻的选项。这将读取先前的状态并直接对其进行编辑以使后退按钮指向其他位置。

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

优点和缺点

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

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

(3) 这看起来相当容易,但我不知道这是否可行,而且感觉真的很hacky

(4) 如果我们要为后退按钮提供$rootScope 函数,我们需要首先调用它,此时,一个控制器会在其他任何控制器之前被调用,但这一切都可能改变一旦我们集成了推送通知。

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

【问题讨论】:

    标签: angularjs ionic-framework


    【解决方案1】:

    首先,这是一个笨重的设计模式。如果你触发了一个模态,从那时起所有的 UI 转换都应该限制在模态中,这样你就不会混淆你的用户。将模态视为一种简单地钻入动作而不是导航元素的东西。如果您需要为每个数组元素进行多页交互,请将它们全部构建在模态框内。您应该可以在自定义指令中实现这一点。

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

    【讨论】:

      猜你喜欢
      • 2019-01-14
      • 1970-01-01
      • 2023-03-19
      • 1970-01-01
      • 2019-03-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多