加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

angularjs – 如何通过$stateParams传递一个对象?

发布时间:2020-12-17 06:54:01 所属栏目:安全 来源:网络整理
导读:我有一个具有大量状态的ui-router应用程序,我需要能够通过$stateParams传递模型.在每个$http请求中,我检查响应是否为“STATE”参数,该参数从服务器返回.如果存在,我执行$state.go(STATE). 这么有效,我得到了我的$stateProvider: $stateProvider .state('Acc
我有一个具有大量状态的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.invalid,account.valid或account.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发送帐户.

在控制器中,我基本上需要能够说vm.account = $stateParams.account

我的问题是:

如何修改我的$状态,使其都具有命名控制器并获取状态参数并从控制器访问?

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

编辑:想出来

这是我的控制器需要的内容:
????if($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必须在状态配置中进入控制器声明.

解决方法

这是我的控制器需要的内容:
????if($stateParams&& $stateParams.data){
????????????????vm.Account = $stateParams.data;
????????????}

而这就是州最终看起来像:

.state('taxAccount.invalid',params:{data:null}
        })

我没有意识到我可以把params:{data:null}.我认为stateParams必须在状态配置中进入控制器声明.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读