我正在尝试使用路由
中的templateUrl请求发送服务属性catId
我有服务 formAction
myApp.factory('formAction', [function () {
var catId
return {
catId: catId,
}
}]);
route.js
function ($routeProvider) {
$routeProvider.when('/ad/step1', {
templateUrl: '/ad/place/step-one',
controller : 'Step1Controller'
}).when('/ad/step2', {
templateUrl: function () {
// i dont want pass catId as parametr
return '/ad/place/step-two?catId=' // formAction.catId.
},
controller : 'Step2Controller',
}).otherwise({
templateUrl: '/ad/place/step-one',
controller : 'Step1Controller'
});
}
当我进入step2时,必须发送catId
请求
note :我不想在路线中传递catId
作为参数:
templateUrl: function (param) {
return '/ad/place/step-two?catId=' + param.catId.
},
我有办法吗?
答案 0 :(得分:1)
因此,当您使用默认(标准)角度路由时,我们转到$routeProvider documentation,我们可以看到以下内容:
templateUrl - {string = | function()=} - 返回a的路径或函数 应该由ngView使用的html模板的路径。
如果templateUrl是一个函数,将使用以下函数调用它 参数:
{Array.<Object>}
- 从当前提取的路由参数$location.path()
应用当前路线
因此,来自templateUrl的参数是固定的
这意味着您无法将服务注入此功能。
但是,如果您正在使用angular UI router(最佳角度路由模块IMHO),那么您可以发现每个州都有一个可选参数'templateProvider',这是一个可以注入的函数强>
希望它会有所帮助。