我有一个有多个标签的Ionic应用程序。要在标签之间导航,我使用
$state.go('tabname',{params:params})
这一切都正常,但如果我将参数传递给$ state.go,它会重新加载整个角度控制器。
我把一个console.log放在我的角度控制器的顶部。首次加载选项卡时这会注销(正常)然后如果我导航到另一个选项卡然后导航回来它不会记录(正常)但如果我导航到另一个选项卡并调用
$state.go('tabname', {paramKey:'paramValue'})
它记录(不是很好)告诉我正在重新加载与该选项卡关联的控制器。这引起了很多问题。有没有办法告诉视图不要重新加载控制器?
以下是相关标签的$ stateProvider .state:
.state('tab.ask', {
url: '/ask',
views: {
'tab-ask': {
templateUrl: 'templates/tab-ask.html',
controller: 'AskCtrl'
}
},
params: {
'paramKey': null
}
})
答案 0 :(得分:0)
首先,没有办法告诉控制器不重新加载状态变化。据我所知,基本上是角度如何工作 - 数据绑定等等。这意味着,控制器中的所有值都不可用于当前范围,并且会为当前视图启动范围。
在不使用缓存的情况下存储值的最佳方法是在$services
https://docs.angularjs.org/guide/services之后使用Singletons design pattern
,并且即使重新加载控制器,传递给服务的值也不会更改。
您可以找到有关如何在https://www.tutorialspoint.com/angularjs/angularjs_services.htm上创建服务的示例。
每次任何事件(在标签页上)都需要更新服务,以便您可以跟踪您所在的页面。
祝你好运。