将对象传递给$ state.go

时间:2016-08-24 16:00:34

标签: javascript angularjs typescript angular-ui-router

好的,我不知道如何解决这个问题。我有以下状态:

    var myState:ng.ui.IState = <ng.ui.IState> {
        url: '/new/{order.orderNumber}',
        controller: 'OrderController',
        controllerAs: 'vm',
        templateUrl: '/order.tpl.html',
        resolve: {
            order: ['OrderService', '$stateParams', '$q', duplicateOrder]
        }
    };

我带着:

来到这个州
this.state.go("myState", {"order": order});

这不起作用,resolveFunction中的方法duplicateOrder无法找到订单对象,$ stateParams完全为空。

如果我使用String,一切正常。我使用UI-Router v0.2.18,因为我读过它自v.0.2.13起可以使用对象

1 个答案:

答案 0 :(得分:0)

您应该在params对象上添加state,如下所示:

var myState:ng.ui.IState = <ng.ui.IState> {
        url: '/new/{order.orderNumber}',
        controller: 'OrderController',
        controllerAs: 'vm',
        templateUrl: '/order.tpl.html',
        params:{order:null},
        resolve: {
            order: ['OrderService', '$stateParams', '$q', duplicateOrder]
        }
    };

这段代码的作用是使用$stateParams.order初始化null,每当您使用$state.go("myState",{order:order})发送参数时,它都会使用该数据设置值。