angularjs控制器没有被加载/调用

时间:2016-10-31 11:08:33

标签: angularjs angular-ui-router

从state parents.view转换到parents.view.childs时 - 我没有看到与parent.view.childs相关联的控制器被调用/加载。但是看到getChilds()中的打印件,我看到服务器响应了子数据。

但我无法理解为什么没有调用孩子控制器。控制台上没有错误。

使用controllerAs有什么问题:'vm'在这两种状态下还是其他什么?另请指出如何调试状态转换?

角度路线文件

.state('parents.view', {
  url: '/:parentId',
  templateUrl: 'modules/parents/client/views/view-parent.client.view.html',
  controller: 'parentsController',
  controllerAs: 'vm',
  resolve: {
    parentResolve: getparent
  },
  data: {
    pageTitle: 'parent {{ parentResolve.name }}'
  }
})
.state('parents.view.childs', {
  url: '/childs',
  templateUrl: 'modules/childs/client/views/list-childs.client.view.html',
  controller: 'childsListController',
  controllerAs: 'vm',
  resolve: {
    parentResolve: getchilds
  },
  data: {
    pageTitle: 'childs List'
  }
})

getchilds.$inject = ['$stateParams', '_childsService'];

function getchilds($stateParams, _childsService) {
  console.log('getting childs');
  return _childsService.query().$promise;
}

控制器

(function () {
  'use strict';

  angular
    .module('childs')
    .controller('childsListController', childsListController);

  childsListController.$inject = ['$stateParams','$state', 'childResolve'];

  function childsListController($stateParams,$state,childResolve) {
    console.log('say hello',childResolve);
    vm.childs = childResolve;
  }
}());

编辑:get_childs()到getchilds()

2 个答案:

答案 0 :(得分:1)

您需要将每个解析对象作为依赖项注入相应的控制器中。

在你的childsListController中,你只注入了childResolve,而你声明的唯一解析对象是

  

parentResolve:getchilds

我对这种语法不是很熟悉,但问题可能就是忘记改变父母的问题。对孩子的解决方案'在parent.view.childs状态?

答案 1 :(得分:1)

得到答案:

  

如果未加载,请始终检查父级是否有   地方(持有人)

ui-view=""

更好的是,如果有命名视图,我们每个都需要一个目标

ui-view="name1"
ui-view="name2"

并在子 views :{} 定义中使用正确的绝对命名。点击此处了解更多详情