1

我正在使用 $state.go("titulos", params) 加载标题页面,在这种情况下不会再次加载父控制器(emissao)。但是当我调用孙子 $state.go("titulos.fluxos", params) 时,父控制器 (titulos) 会再次加载。我不希望这种情况发生,因为父控制器已经加载,这是不受欢迎的行为。我不知道为什么第一个孩子在没有加载父母的情况下完美地工作,但是对于孙子(titulos.fluxos)不必要地加载他的父母(titulos)。我怎么能解决这个问题?请。

$stateProvider.state('emissao', {
    url: '/emissao',
    views: {
        'main': {
            controller: 'emissaoCtrl',
            templateUrl: 'view/emissao.html'
        }
    },
    resolve: {
        emissoes: function (cadastroAPI) {
            return cadastroAPI.listar('emissao');
        }
    }
});

$stateProvider.state('titulos', {
    parent: 'emissao',
    url: '/titulos',
    controller: 'titulosCtrl',
    templateUrl: 'view/titulo.html',
    resolve: {
        titulos: function (cadastroAPI, $stateParams) {
            return cadastroAPI.listarTitulos($stateParams.parent.obj);
        }
    },
    params: {
        parent: null,
        container: null
    }
});

$stateProvider.state('titulos.fluxos', {
    url: '/fluxos',
    controller: 'fluxosCtrl',
    templateUrl: 'view/fluxo.html',
    resolve: {
        fluxos: function (fluxoAPI, $stateParams) {
            return fluxoAPI.listar($stateParams.parent.obj.Id);
        }
    },
    params: {
        parent: null,
        container: null
    }
});
4

1 回答 1

1

我发现了问题!实际上,正常行为不会加载父控制器,我的问题是“params”参数在父控制器“titulos”和子“fluxos”中具有相同的名称“父”,这导致了不必要的调用父控制器。

于 2017-01-29T05:46:01.417 回答