刚开始研究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 }
};
并解决了。
答案 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>