离子的状态不断变化.带notify false的transitionTo重置范围变量
changing states in ionic after state.transitionTo with notify false resets the scope variables
我有一个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中使用服务来跨州共享数据
相关文章:
- 如果 a 为 false,则 if(a) === if(false)
- 如何在angularJS中编辑时,如果DB中的值为true,则设置复选框,如果值为false,则取消选中复选框
- 如何将localStorage值设置为false
- JavaScript-切换“;全部检查”;复选框true/false
- gulp Iconify任务抛出错误TypeError:Path必须是字符串.收到false
- 如何使用javascript将字段强制设置为false
- (false==false==true)怎么可能是真的
- Array.every返回false,而不是类型error
- Javascript If else 只返回 TRUE 或只返回 FALSE
- 为什么当我在数组上测试regex时,它会返回false
- WIll window.addEventListener(“加载”,function(),false);等待浏览器自动填
- 过滤器返回true或false
- 什么是'true'和'false'和'null'
- 在if语句中,undefined等于false
- 检查文本区域是否为空总是返回false
- PHP strtotime()为JavaScript日期字符串返回false
- 为什么当async标志设置为false时,xmlhttprequest中的代码可以工作,而当它设置为true时却不能工作
- 在JavaScript中为true==1和false==0
- 使用ajax调用中的数据而不使用async:false
- 离子的状态不断变化.带notify false的transitionTo重置范围变量