使用param

时间:2016-11-23 13:22:22

标签: javascript angularjs cordova ionic-framework

我有一个有多个标签的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
    }
})

1 个答案:

答案 0 :(得分:0)

首先,没有办法告诉控制器不重新加载状态变化。据我所知,基本上是角度如何工作 - 数据绑定等等。这意味着,控制器中的所有值都不可用于当前范围,并且会为当前视图启动范围。

在不使用缓存的情况下存储值的最佳方法是在$services https://docs.angularjs.org/guide/services之后使用Singletons design pattern,并且即使重新加载控制器,传递给服务的值也不会更改。

您可以找到有关如何在https://www.tutorialspoint.com/angularjs/angularjs_services.htm上创建服务的示例。

每次任何事件(在标签页上)都需要更新服务,以便您可以跟踪您所在的页面。

祝你好运。