是否可以在module.config中检索参数

时间:2016-08-05 14:30:43

标签: angularjs

刚开始研究AngularJS。

是否可以在module.config中检索参数以解决路由问题? 在下面的代码中,我的$ routeParams.id参数未定义。 ...或参数仅在module.controller中可用。这段代码有什么问题?

var testApp = angular.module("testApp", ["ngRoute"]).config(function ($routeProvider, $locationProvider) {
    $routeProvider
        .when("/ActivityModify/:id?", {
            templateUrl: "AngTemplates/ActivityModify.html"
            , controller: "activityModifyController"
            , controllerAs: "actModCtrl"
            , resolve: {    
                ActivityModify: function ($http, $routeParams) {

                    var config = {
                        params: { "id": $routeParams.id }
                    };

                    return $http.get("WS/ActivitiesService.asmx/GetActivityById", config)
                        .then(function (response) {
                            return response.data;
                        })

                }
            }
        })

@devqon: 我在html中有这样的东西:

 <li ng-repeat="act in actAllCtrl.ActivitiesAll">
                    <!-- drag handle -->
                    <!--<span class="handle">
                        <i class="fa fa-ellipsis-v"></i>
                        <i class="fa fa-ellipsis-v"></i>
                    </span>-->
                    <!-- checkbox -->
                    <!--<input type="checkbox" value="">-->
                    <!-- todo text -->
                    <h5>
                        <span class="text">
                            <!--Design a nice theme-->
                            Titolo: {{act.ActivityTitle}}
                        </span>
                    </h5><br />
                    Stato: {{act.ActivityState}}<br />
                    Descrizione: {{act.ActivityDescription}}
                    <!-- Emphasis label -->
                    <!--<small class="label label-danger"><i class="fa fa-clock-o"></i> 2 mins</small>-->
                    <!-- General tools such as edit or delete-->
                    <div class="tools">
                        <a class="fa fa-edit" href="ActivityModify/{{act.id}}"></a>
                        <i class="fa fa-trash-o"></i>
                    </div>
                </li>

- &GT;分辨率!只是为了清除对我有用的东西,正如@Alon Eitan回答

所提到的那样
  

可以使用$ route.current.params来访问新路由的参数

所以我修改了这样:

 ActivityModify: function ($http, $route) {

                    var config = {
                        params: { "id": $route.current.params.id }
                    };

并解决了。

1 个答案:

答案 0 :(得分:1)

阅读this

请注意,$ routeParams仅在路由更改成功完成后更新。这意味着路由解析函数无法依赖 $ routeParams正确无误。相反,您可以使用$ route.current.params来访问新路由的参数。

因此,请注入$location而不是$routeParams,并获取此类参数(编辑:无效,请在代码段后阅读我的编辑说明):

var params = $location.search();
var config = {
    params: { "id": params.id }
};

修改:感谢您在评论中纠正我,您应该使用$route.current.params.id编写我自己提供的文档:|

此外,您使用的是简单的href属性,并且在将其与角度表达式结合使用时应将其更改为ngHref

<a class="fa fa-edit" ng-href="ActivityModify/{{act.id}}"></a>