【问题标题】:AngularJS: Reload parent controller on state changeAngularJS:在状态更改时重新加载父控制器
【发布时间】:2018-04-30 13:03:35
【问题描述】:

我有一些嵌套状态:

$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),我能够达到预期的结果。

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

【问题讨论】:

    标签: angularjs nested angular-ui-router reload


    【解决方案1】:

    reload 属性也接受字符串值,因此您可以明确指定父状态名称,例如 reload: 'parent'

    试一试,看看有没有效果

    【讨论】:

    • 我试过了,reload('parent.child1')、reload('parent.child1', $stateParams) 和 reload('parent'),不幸的是,它们的结果都是一样的。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多