AngularJS:在状态更改时重新加载父控制器

时间:2017-11-16 21:04:34

标签: angularjs nested angular-ui-router reload

我有一些嵌套状态:

$stateProvider.state({
    name: 'parent',
    url: '/parent',
    abstract: true,
    template: '<ui-view/>'
})
.state({
    name: 'parent.child1',
    url: '/:id/child1',
    templateUrl: 'path/to/template'
})
.state({
    name: 'parent.child1.child2',
    url: '/child2',
    onEnter: function($state, $stateParams, $rootScope, $uibModal) {
        $uibModal.open({
            templateUrl: 'path/to/template',
            controller: 'Controller',
            controllerAs: 'vm',
            size: 'md',
            backdrop: 'static'
        }).result.then(function(result) {
            if (result) {
                return $state.transitionTo("parent.child");
            }
        });
    }
});

第二个子状态是一个模态,当它的表单提交完成时,应该关闭模态,转换回第一个子状态,然后重新加载第一个子状态。要做到这一点,我正在使用:

function close() {
    $uibModalInstance.dismiss();
    $state.transitionTo('parent.child1', $stateParams, {reload: true});
}

模态正确关闭,发生转换,但没有重新加载。我也尝试使用$state.go('parent.child1', $stateParams, {reload: true});,但同样的事情发生了。

有谁知道我做错了什么?谢谢!

更新

通过取消嵌套第二个子节点(即将parent.child1.child2更改为parent.child2),我能够达到预期的效果。

从技术上讲,这对我正在做的事情很好,但如果有人有任何想法,我还是宁愿窝住它们。

1 个答案:

答案 0 :(得分:0)

reload属性也接受字符串值,因此您可以明确指定父状态名称,例如Interface<? extends T>

尝试一下,看看它是否有所作为