gpt4 book ai didi

angularjs - 如何通过 $stateParams 传递对象?

转载 作者:行者123 更新时间:2023-12-03 22:25:08 30 4
gpt4 key购买 nike

我有一个带有大量状态的 ui-router 应用程序,我需要能够通过 $stateParams 传递模型。在每个 $http 请求中,我都会检查从服务器返回的“STATE”参数的响应。如果存在,我执行 $state.go(STATE) .

如此有效,我有我的 $stateProvider :

$stateProvider
.state('Account', {url: '/Account', template: '<ui-view/>'})
.state('Account.name', {
url: '/Name',
templateUrl: 'app/Account/partials/Name.html',
controller: 'AccountNameController as nameVm'
})

还有更多看起来像这样的状态。

我有一个数据模型,它只是一个带有通过函数获取和设置的对象的工厂。因此,每当我调用 saveAccount() 时,它都会获取模型并将其发送到 Web API 后端。后端验证数据并将其与 STATE 参数( account.invalidaccount.validaccount.needsMoreInfo )一起发回。这是我的 $httpInterceptor
.factory('httpInterceptor', ['$q', '$injector',
function ($q,$injector) {
return {
'response': function(response) {
if(response.data.state){
$injector.get('$state').go(response.data.state, response.data.account);
}
return response;
}
};
}
])

如您所见,我正在尝试通过 stateparams 发送帐户。

在 Controller 中,我基本上需要能说 vm.account = $stateParams.account
我的问题是:

如何修改我的 $states 以使其具有命名 Controller 并获取状态参数并从 Controller 访问该参数?

我没有通过服务传递数据的原因是因为有多个模型,所以我不能只在 $httpInterceptor 中提供服务的名称,因为它不是恒定的。

编辑:想通了

这是我的 Controller 需要的东西:
如果 ($stateParams && $stateParams.data){
vm.Account = $stateParams.data;
}

这就是状态最终的样子:
.state('taxAccount.invalid', {
url: '/Invalid?params',
templateUrl: 'app/TaxAccount/partials/Invalid.html',
controller: 'taxAccountInvalidController as invalidVm',
params:{data:null}
})

我没有意识到我可以放 params:{data:null} .我认为 stateParams 必须进入状态配置中的 Controller 声明。

最佳答案

这是我的 Controller 需要的东西:
如果 ($stateParams && $stateParams.data){
vm.Account = $stateParams.data;
}

这就是状态最终的样子:

.state('taxAccount.invalid', {
url: '/Invalid?params',
templateUrl: 'app/TaxAccount/partials/Invalid.html',
controller: 'taxAccountInvalidController as invalidVm',
params:{data:null}
})

我没有意识到我可以放 params:{data:null} .我认为 stateParams 必须进入状态配置中的 Controller 声明。

关于angularjs - 如何通过 $stateParams 传递对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32830367/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com