使用ui-router和angularjs通过params遍历页面

时间:2018-04-24 08:37:24

标签: javascript angularjs angular-ui-router

我想将一个对象传递给一个controllerA到另一个controllerB并显示该对象。为此,我使用ui-router和angularjs。

这是我的controllerA,它使用$state.href()构建网址:

const url = $state.href('home.stateA', {
    objectA: objectA
});

window.open(url, '_blank');

现在,这是我的路线档案:

.state('home.stateA', {
    url: '/stateA',
    template: '<template-b></template-b>',
    params: {
        // object: null
        objectA: null
    }
})

最后,我试着像我那样在控制器B中获取对象:

// $scope.object = $stateParams.object;
$scope.object = $stateParams.objectA;

当我console.log $scope.object时,我获得null这是我的路线文件中的默认值。

那么出了什么问题?我想知道$window.open是不是问题。

感谢您的帮助。

3 个答案:

答案 0 :(得分:0)

我建议你使用url参数。

.state('home.stateA', {
    url: '/stateA?object',
    template: '<template-b></template-b>',
    params: {
       object: null
    }
})

打开新标签页时执行

const url = $state.href('home.stateA', {
    objectA: JSON.stringify(objectA)
});

在controllerB中

$scope.object = JSON.parse($stateParams.objectA);

因为当你打开新标签时。国家参数丢失了

答案 1 :(得分:0)

window.open(url, '_blank');

您正在打开一个新窗口并尝试传递一个对象。

传递字符串/数字

如果状态网址定义为'/stateUrl/:id',则可以将字符串/数字说明ID作为网址的一部分传递 然后您可以使用$stateParams.id

访问它

分享对象

您可以使用localStorage以及JSON.stringifyJSON.parse来共享该对象。

设置数据

localStorage.setItem('object', JSON.stringify(object));

获取数据

var object = JSON.parse(localStorage.getItem('object'));

答案 2 :(得分:0)

我刚刚找到了解决方案 - &gt;

ControllerA

const url = $state.href('stateA');
let newTab = $window.open(url);

newTab.objectA = objectA;

ControllerB:

$scope.objectA = $window.objectA

状态非常简单:

.state('home.stateA', {
    url: '/stateA',
    template: '<template-b></template-b>',
})

我不知道它是否是实现我所需要的最佳方式,但至少它是有效的。它可以帮助别人。

谢谢你们,祝你们度过愉快的一天!