我的州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>
答案 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){ ...
})