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