gpt4 book ai didi

javascript - 使用函数通过 $routeProvider 定义 Controller

转载 作者:行者123 更新时间:2023-11-28 00:31:39 24 4
gpt4 key购买 nike

我正在尝试以下代码,但没有成功:

MyApp.config(['$routeProvider', '$provide', function($routeProvider, $provide) {
$routeProvider
.when('/', {
redirectTo: '/'
})


.when('/:page', {
templateUrl: function($routeParams) {
return 'views/'+ $routeParams.page +'.html';
},

})
.when('/:page/:child*', {
templateUrl: function($routeParams) {
return 'views/'+ $routeParams.page + '/' + $routeParams.child + '.html';
},
controller: function($routeParams) {
return $routeParams.child + '.' + $routeParams.page + 'Controller';
},
})

.otherwise({
redirectTo: '/'
});
}]);

我想要完成的是使用基于 $routParams 变量的函数为每个 View 定义 Controller :

controller: function($routeParams) {
return $routeParams.child + '.' + $routeParams.page + 'Controller';
},

虽然它与 templateUrl 配合得很好,但当我定义 Controller 时它似乎不起作用。

最佳答案

实现这一点的想法是,创建一个常量变量,将其分配给 controller在里面我们想要有条件地加载,我们想通过观察 $routeParams 设置 Controller 名称,为此我们可以关注 $routeChangeStart因此我们将设置 costants.controllerName value,这将是 Controller 的名称。

您可以通过执行以下操作来实现此目的。

常数

MyApp.constant('constants',{
controllerName : ''
});

配置

MyApp.config(['$routeProvider', '$provide','constants', function($routeProvider, $provide, constants) {
$routeProvider
.when('/', {
redirectTo: '/'
})
.when('/:page', {
templateUrl: function($routeParams) {
return 'views/' + $routeParams.page + '.html';
}
})
.when('/:page/:child*', {
templateUrl: function($routeParams) {
return 'views/' + $routeParams.page + '/' + $routeParams.child + '.html';
},
controller: constants.controllerName
})
.otherwise({
redirectTo: '/'
});
}]);

运行阻止

MyApp.run(['$rootScope', '$location', 'constants', '$routeParams',
function($rootScope, $location, constants, $routeParams) {
// register listener to watch route changes
$rootScope.$on("$routeChangeStart", function(event, next, current) {
constants.controllerName = $routeParams.child + '.' + $routeParams.page + 'Controller'; //set controller name on $routeChangeStart
});
}]);

我还没有尝试过,我相信这段代码应该可以工作,谢谢。

关于javascript - 使用函数通过 $routeProvider 定义 Controller ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28923738/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com