Javascript 在routeProvider中使用服务属性

Javascript 在routeProvider中使用服务属性,javascript,angularjs,Javascript,Angularjs,我正在尝试在路由内发送带有templateUrl请求的服务属性catId 我有服务功能 myApp.factory('formAction', [function () { var catId return { catId: catId, } }]); route.js function ($routeProvider) { $routeProvider.when('/ad/step1', {

我正在尝试在路由内发送带有templateUrl请求的服务属性
catId

我有服务功能

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'
            });
        }
当我执行步骤2时,必须发送
catId
请求

注意:我不希望路线中的pass
catId
参数如下:

        templateUrl: function (param) {
            return '/ad/place/step-two?catId=' + param.catId. 
        },

有什么方法可以做到吗?

因此,当您使用默认(标准)角度布线时,我们可以看到以下内容:

templateUrl–{string=| function()=}–返回 ngView应该使用的html模板的路径

如果templateUrl是一个函数,则将使用以下命令调用它 参数:
{Array.}
-从当前
$location.path()
通过应用当前路由

因此,模板URL的参数是固定的

这意味着您不能将服务注入此函数

但是,如果您正在使用(最佳角度布线模块IMHO),那么您会发现每个状态都有一个可选参数“templateProvider”,这是一个可以注入的函数


希望能有所帮助。

所以,你只需要将你的
catId
值传递给“Step2Controller”?不,我需要发送
catId
,因为模板请求的参数似乎是你应用程序中的一个设计缺陷。为什么首先需要为模板发送GET param?