AngualrJS没有调用控制器

时间:2016-08-03 12:52:42

标签: angularjs angular-routing

我的州state.js

(function() {
    'use strict';

    angular.module('app').config(stateConfig);

    stateConfig.$inject = [ '$stateProvider' ];

    function stateConfig($stateProvider) {
        $stateProvider.state('bmc', {
          parent : 'entity',
          url : '/bmc',
          data : {
            authorities : [ 'ROLE_USER', 'ROLE_ADMIN' ],
          },
          views : {
              'content@' : {
                templateUrl : 'bmc.html',
                controller : 'BmcController',
                controllerAs : 'vm'
              }
          }
        }).state('list', {
          parent : 'bmc',
          url : '/list/:routeId/:entity',
          data : {
              authorities : [ 'ROLE_ADMIN', 'ROLE_USER' ],
          },
          views : {
              'fieldContent@' : {
                templateUrl : 'list.html',
                controller : 'ListController',
                controllerAs : 'vm'
              }
          },
          resolve : {
            loadMyFiles : function($ocLazyLoad) {
                return $ocLazyLoad.load({
                  name : 'list',
                  files : [ 'crud.service.js', 'list.controller.js' ]
                })
            },
            translatePartialLoader : [ '$translate', '$translatePartialLoader', function($translate, $translatePartialLoader) {

                return $translate.refresh();
            } ]
          }
        });
    }
})();

list.controller.js

(function() {
    'use strict';

    angular.module('app').controller('ListController', ListController);

    ListController.$inject = [ '$scope', '$state', '$stateParams' ];

    function ListController($scope, $state, $stateParams) {
        var vm = this;

        console.log( $stateParams.entity );
    console.log( $stateParams.routeId );
    }
})();

当我点击http://localhost:8080/#/bmc/list/xyz/abc生成的以下网址HTML code时,没有任何反应。我不确定问题出在哪里,因为我希望点击时会调用ListController

bmc.html

<a ui-sref="list({routeId: node.name, entity: entity.name})">{{entity.name}} </a>

1 个答案:

答案 0 :(得分:0)

可能其中一个resolve值失败。您应该关注$stateChangeError中的$rootScope,以确保处理这些案例。请参阅ui-router文档:

  

$ stateChangeError - 在转换期间发生错误时触发。它的   重要的是要注意,如果你的决心有任何错误   他们将使用的函数(javascript错误,不存在的服务等)   传统上不扔。您必须侦听此$ stateChangeError   事件以捕获所有错误。使用event.preventDefault()来阻止   $ UrlRouter将URL恢复到之前的有效位置(in   URL导航的情况。)

$rootScope.$on('$stateChangeError', 
 function(event, toState, toParams, fromState, fromParams, error){ ...
})