一尘不染

每当打开/显示视图时,运行控制器功能

angularjs

我正在构建一个带有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()函数,但是只有在用户第一次打开视图/选项卡时才可以。每当用户打开该视图或标签时,我都想调用一个函数(以更新地理位置)。

什么是实现该目标的正确方法?

感谢您的帮助!


阅读 226

收藏
2020-07-04

共1个答案

一尘不染

如果您已为视图分配了某个控制器,则每次加载视图时都会调用该控制器。在这种情况下,您可以在调用控制器后立即执行一些代码,例如,通过这种方式:

<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){ ... })

您可以在此处找到更多详细信息:状态更改事件

2020-07-04