2016-08-03 65 views
0

我的状态state.jsAngualrJS不调用控制器

(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 : { 
       '[email protected]' : { 
       templateUrl : 'bmc.html', 
       controller : 'BmcController', 
       controllerAs : 'vm' 
       } 
      } 
     }).state('list', { 
      parent : 'bmc', 
      url : '/list/:routeId/:entity', 
      data : { 
       authorities : [ 'ROLE_ADMIN', 'ROLE_USER' ], 
      }, 
      views : { 
       '[email protected]' : { 
       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); 
    } 
})(); 

当我点击由HTML code没有生成以下网址http://localhost:8080/#/bmc/list/xyz/abc发生。我不确定问题在哪里,因为我期望在点击时调用ListController

bmc.html

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

我的猜测是,一些在解决部分可能永远不会被解决。直到这些值被解析后才能创建控制器。尝试现在评论它们和/或添加一些日志消息。 – Duncan

+0

我明白了..好吧,让我试试。 –

+0

我把那些js直接提交给index.html的情况下,但仍然没有采取行动。我认为我在做一些非常错误的事情。 –

回答

0

大概resolve值中的一个发生故障。您应该在$rootScope中注意$stateChangeError以确保您处理这些情况。请参阅ui-router文档:

$ stateChangeError - 在转换期间发生错误时触发。它是 重要的是要注意,如果你有任何错误在您的解决 功能(JavaScript错误,不存在的服务等),他们将 传统不扔。您必须监听此$ stateChangeError 事件才能捕获所有错误。使用event.preventDefault()来阻止$ UrlRouter将URL恢复到上一个​​有效位置(在 URL导航的情况下)。

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

这非常有帮助。谢谢。解决翻译部分时出现了一些问题。我删除它,似乎很好。还有一件事我注意到并希望得到您的意见。我想在我的bmc部分有我的列表部分,但只针对特定部分,而不是全部。 Thr问题我看到控制器可能没有加载,因为dom被加载可能是在bmc部分之后,所以内部列表控制器不工作。你怎么看?因为你可以看到我的'列表'视图包含名称fieldContent @,它出现在bmc.html –

+0

我认为这可能需要是一个单独的问题。 – Duncan