离子的状态不断变化.带notify false的transitionTo重置范围变量

changing states in ionic after state.transitionTo with notify false resets the scope variables

本文关键字:transitionTo false 范围 变量 notify 状态 变化      更新时间:2023-09-26

我有一个ionic应用程序,用户可以选择标签,然后看到标记的内容,当用户到达应用程序时,我们显示URL如下

http://192.168.43.149:8100 #/探索

当用户点击标签时,我将URL从上方更改为下方

http://192.168.43.149:8100 #/探索吗?标签= ABCD

我必须实现这一点的代码(不重新加载页面)如下

     $state.transitionTo($state.current.name, {
             tag: 'ABCD'
         }, {
             notify: false
         });

一切都工作得很好,直到这里,标签被选中,内容被过滤,用户看到标签在顶部与一个新的URL(未重新加载)但是,如果选择一个标签后,当我点击任何贴片(过滤的一个),然后我看到一个小故障之前,应用程序改变状态,在改变状态之前,我看到标签被删除,内容被重置,当我从视图返回时,我仍然看到URL为http://192.168.43.149:8100/#/explore?tag=ABCD,但该标签上的所有因变量都被删除并充当http://192.168.43.149:8100/#/explore。

据我所知,当从一个州移动到另一个州时,看起来您正在丢失状态信息。这是Angular UiRouter/ngRouter的一个常见问题,因为Angular JS本质上是无状态的。处理这种情况的理想方法是不将状态数据绑定到控制器或状态定义。相反,使用应用程序级服务来绑定数据。例如:

$routeProvider
      .when('/users', {
        templateUrl: '/admin/tpl/users.html',
        controller: 'UsersController',
        resolve: {
          Users: function(Users) {
            return Users.get();
          }
        },
        activetab: 'users'
      })

在这个例子中,你可以看到,无论你如何转换到/users状态,User服务都会被注入到路由定义中,并且每次都会获取用户数据。

这就是为什么你应该在AngularJS中使用服务来跨州共享数据