Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angularjs $routeProvider中每个路由的调用函数_Angularjs - Fatal编程技术网

Angularjs $routeProvider中每个路由的调用函数

Angularjs $routeProvider中每个路由的调用函数,angularjs,Angularjs,我遇到了一个小挑战,还没有找到解决办法。当我尝试了几件事时,我请求你的帮助,这样也许有人能把我引向正确的方向 我在AngularJS中有一个routes.js。我正在使用$routeProvider。在每个.when()中,我都需要调用一个函数(因为我需要对该名称执行某些操作) 这只是一个例子,我知道这行不通。但我想告诉你我在做什么。正如您所见,这将打乱我的代码(您需要更多的代码才能使其正常工作,因此您将为每个.when()获得大量额外的代码,并且每个语句中的代码都完全相同(参数除外) 因此,我

我遇到了一个小挑战,还没有找到解决办法。当我尝试了几件事时,我请求你的帮助,这样也许有人能把我引向正确的方向

我在AngularJS中有一个routes.js。我正在使用
$routeProvider
。在每个
.when()
中,我都需要调用一个函数(因为我需要对该名称执行某些操作)

这只是一个例子,我知道这行不通。但我想告诉你我在做什么。正如您所见,这将打乱我的代码(您需要更多的代码才能使其正常工作,因此您将为每个
.when()
获得大量额外的代码,并且每个语句中的代码都完全相同(参数除外)

因此,我正在寻找一些可以在调用之前或之后调用的函数(只要被调用就没有意义)
.when()


我在这里读了很多关于堆栈溢出的问题,但没有找到正确的答案。大多数问题都是为了将其放入控制器中。然而,我必须为每个路由调用的函数都是完全相同的。因此,我不想将其放入我所有的控制器中,只想将其放入routes.js中,并在每次
when()之后调用

您正在寻找类似于
$routeChangeSuccess
$routeChangeStart
(请参阅)

更改路线前

function runConfig($rootScope) {
    $rootScope.$on('$routeChangeStart', function (event, next, current) {
        if (next && next['$$route']) {
            var route = next['$$route']['originalPath'];
            //route is 'url', 'url1' or 'urlX'
            //do with it as you please
        }
    });
}

angular
        .module('app')
        .run(runConfig);
更改路线后

function runConfig($rootScope) {
    $rootScope.$on('$routeChangeSuccess', function (event, current, prev) {
        if (current && current['$$route']) {
            var route = current['$$route']['originalPath'];
            //route is 'url', 'url1' or 'urlX'
            //do with it as you please
        }
    });
}

angular
        .module('app')
        .run(runConfig);

如果你愿意改变这一点,一切都会变得容易得多。ui router远远优于base Angular提供的内置路由。下面是一个简单的例子,说明如何使用ui router执行函数。在这个例子中,我设置了一个变量的值,然后将其注入控制器中,并只调用一个简单的函数

angular.module('app',['ui.router']))
.config(函数($stateProvider,$urlRouterProvider){
$urlRouterProvider。否则('/');
$stateProvider.state('main'{
url:“/”,
模板:“这是主状态-mainValue:{{vm.mainValue}}”,
控制器:“主控制器”,
controllerAs:'vm',
决心:{
mainValue:function(){
返回2+2;
},
函数(){
log('这只是调用一个没有返回的函数');
}
}
});
})
.controller('MainController',函数(mainValue){
this.mainValue=mainValue;
});

太好了!我很乐意帮忙;)
function runConfig($rootScope) {
    $rootScope.$on('$routeChangeSuccess', function (event, current, prev) {
        if (current && current['$$route']) {
            var route = current['$$route']['originalPath'];
            //route is 'url', 'url1' or 'urlX'
            //do with it as you please
        }
    });
}

angular
        .module('app')
        .run(runConfig);