我正在构建一个带有angular + ionic的应用程序,该应用程序在底部使用一个经典的三按钮菜单,其中包含三个ion- tabs。用户单击选项卡时,该模板通过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){ ... })
您可以在此处找到更多详细信息:状态更改事件。