我正在建立一个应用程序与角离子使用经典的三个按钮菜单底部有三个离子标签。当用户单击选项卡时,该模板将通过ui-router打开。
我有这样的状态:
$stateProvider .state('other',{ url: "/other",abstract: true,templateUrl: "templates/other/other.html" })
在模板中我做的像:
<ion-nav-view name="other" ng-init="doSomething()"></ion-nav-view>
我知道我可以写我的控制器中的doSomething()函数,并手动调用它。这给了我相同的问题。我似乎不知道如何调用doSomething()函数多次,当有人打开该视图。
现在,doSomething()函数调用很好,但只有第一次视图/标签页被用户打开。每当用户打开该视图或选项卡时,我想调用一个函数(更新地理位置)。
什么是正确的方法来实现呢?
感谢您的帮助!
如果您已为视图分配了某个控制器,则每次加载视图时都将调用控制器。在这种情况下,可以在控制器调用时立即执行一些代码,例如:
<ion-nav-view ng-controller="indexController" name="other" ng-init="doSomething()"></ion-nav-view>
和在你的控制器:
app.controller('indexController',function($scope) { /* Write some code directly over here without any function,and it will be executed every time your view loads. Something like this: */ $scope.xyz = 1; });
编辑:您可以尝试跟踪状态更改,然后在路由更改并访问某个路由时执行一些代码,例如:
$rootScope.$on('$stateChangeSuccess',function(event,toState,toParams,fromState,fromParams){ ... })
您可以在这里找到更多详细信息:State Change Events。