Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angularjs 如何将状态参数传入ui路由器?_Angularjs_Routing_Angular Ui Router_Angularjs Routing - Fatal编程技术网

Angularjs 如何将状态参数传入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

正在尝试将参数传递到我的ui路由器:

$state.go('orderDetail', {myParam: {accountID: $scope.selectedAccount}})
在my
stateprovider
中,
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
是对象的状态,需要在state
params
选项中定义其默认值,方法是为其指定
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匹配器中的splat
URL:/detail/:myParam
。此字符串在itI上没有
accountID
属性。我忘了说state.go语句位于设置accountID的另一个控制器中。然后它转到stateprovider,我想在那里读取传递的参数accountId@Leeuwtje你试过我建议的方法吗。。。?我现在不明白你的意思。你能用更多的细节更新你的问题吗。谢谢:)你发现了什么吗?它没有传入参数,它仍然返回为“[object]”之类的东西?