Angularjs 如何将状态参数传入ui路由器?
正在尝试将参数传递到我的ui路由器:Angularjs 如何将状态参数传入ui路由器?,angularjs,routing,angular-ui-router,angularjs-routing,Angularjs,Routing,Angular Ui Router,Angularjs Routing,正在尝试将参数传递到我的ui路由器: $state.go('orderDetail', {myParam: {accountID: $scope.selectedAccount}}) 在mystateprovider中,orderDetail状态如下所示: .state('orderDetail', { templateUrl: 'modules/common/orders/partials/detail.html?referrer', controller: 'OrderDe
$state.go('orderDetail', {myParam: {accountID: $scope.selectedAccount}})
在mystateprovider
中,orderDetail
状态如下所示:
.state('orderDetail', {
templateUrl: 'modules/common/orders/partials/detail.html?referrer',
controller: 'OrderDetailCtrl',
url: '/detail/:myParam',
resolve: {
orderDetails: function (myservice, configService, $stateParams) {
console.log('resolve');
var referrer = $stateParams.myParam;
debugger;
console.log('stateParm', referrer.accountID);
console.log('order detail resolving');
//todo remove hardcoded
return myservice.getDetail(configService.config('mock_order_detail').url + '?accountId=2233');
}
}
});
然而
console.log('stateParm',referer.accountID)代码>显示为未定义
。如何传入accountID
param?要识别myParam
是对象的状态,需要在stateparams
选项中定义其默认值,方法是为其指定null
或任何默认值
代码
.state('orderDetail', {
templateUrl: 'modules/common/orders/partials/detail.html?referrer',
controller: 'OrderDetailCtrl',
url: '/detail/:myParam',
resolve: {
//resolve code here
}
params: {
'myParam': null
}
}
要使上述更改生效,您应将ui路由器版本更新为0.2.13
$stateParams只接受字符串,但您可以将对象字符串化为myParam并将其作为myParam传递
$state.go('orderDetail', {myParam: angular.fromJson({accountID: $scope.selectedAccount})})
然后
.state('orderDetail', {
templateUrl: 'modules/common/orders/partials/detail.html?referrer',
controller: 'OrderDetailCtrl',
url: '/detail/:myParam',
resolve: {
orderDetails: function (myservice, configService, $stateParams) {
var referrer = angular.toJson($stateParams.myParam);
return myservice.getDetail(configService.config('mock_order_detail').url + '?accountId=2233');
}
}
});
但是我不建议使用stringized对象,最好使用服务作为状态的桥梁,因为这样会生成丑陋的URL并且不安全,内部状态必须对用户隐藏,我相信,:myParam
您在$stateParams中获取的是一个字符串,它来自URL匹配器中的splatURL:/detail/:myParam
。此字符串在itI上没有accountID
属性。我忘了说state.go语句位于设置accountID的另一个控制器中。然后它转到stateprovider,我想在那里读取传递的参数accountId@Leeuwtje你试过我建议的方法吗。。。?我现在不明白你的意思。你能用更多的细节更新你的问题吗。谢谢:)你发现了什么吗?它没有传入参数,它仍然返回为“[object]”之类的东西?