Angularjs Ui路由器解析-取消状态控制器加载?
角度用户界面路由器问题 当Angularjs Ui路由器解析-取消状态控制器加载?,angularjs,angular-ui-router,Angularjs,Angular Ui Router,角度用户界面路由器问题 当$state.go(“main.loadbalancer.readonly”)在resolve块中激活,解析后仍会加载main.loadbalancer.vips状态控制器VipListCtrl(仅控制器) 由于状态main.loadbalancer.readonly已激活,如何使控制器VipListCtrl取消并不加载 我试着使用一个承诺,但从来没有得到承诺的解决,但UI路由器似乎永远坐在那个解决方案 angular.module("main.loadbalancer
$state.go(“main.loadbalancer.readonly”)代码>在resolve
块中激活,解析后仍会加载main.loadbalancer.vips
状态控制器VipListCtrl
(仅控制器)
由于状态main.loadbalancer.readonly
已激活,如何使控制器VipListCtrl
取消并不加载
我试着使用一个承诺,但从来没有得到承诺的解决,但UI路由器似乎永远坐在那个解决方案
angular.module("main.loadbalancer", ["ui.bootstrap", "ui.router"]).config(function($stateProvider) {
return $stateProvider.state("main.loadbalancer", {
url: "device/:id",
views: {
"content@": {
templateUrl: "loadbalancer/loadbalancer.html",
controller: "LoadBalancerCtrl"
}
}
}).state("main.loadbalancer.vips", {
resolve: {
isDeviceReadOnly: function($state) {
if (!$state.current.data['deviceId']) {
$state.go("main.loadbalancer.readonly"); //THIS IS RAN...NEED CONTROLLER
//VipListCtrl TO NOT RUN AFTERWARDS
}
}
},
url: "/vips",
templateUrl: "loadbalancer/vip-table.html",
controller: "VipListCtrl"
}).state("main.loadbalancer.nodes", {
url: "/nodes",
templateUrl: "loadbalancer/node-table.html",
controller: "NodeListCtrl"
}).state("main.loadbalancer.admin", {
url: "/admin",
templateUrl: "loadbalancer/admin.html",
controller: "AdminCtrl"
}).state("main.loadbalancer.readonly", {
url: "/readonly",
templateUrl: "loadbalancer/readonly.html",
controller: "ReadonlyCtrl"
});
});
解析:{
isDeviceReadOnly:函数($state、$q、$timeout){
if(!$state.current.data['deviceId'])){
$timeout(函数(){$state.go(“main.loadbalancer.readonly”);});
返回$q.reject(“拒绝消息”);//resolve:{
isDeviceReadOnly:函数($state、$q、$timeout){
if(!$state.current.data['deviceId'])){
$timeout(函数(){$state.go(“main.loadbalancer.readonly”);});
return$q.reject(“拒绝消息”);//我不确信$q.reject()会取消控制器的运行。我认为它只是使UI路由器处于挂起状态,解析永远不会完成并等待。确实如此。上面缺少的是包装在$timeout:Edited answer中。我不确信$q.reject()取消控制器的运行。我认为它只是使UI路由器处于挂起状态,解析从未完成并等待。确实如此。上面缺少的是包装在$timeout:Edited answer中。
resolve: {
isDeviceReadOnly: function($state, $q, $timeout) {
if (!$state.current.data['deviceId']) {
$timeout(function() { $state.go("main.loadbalancer.readonly"); });
return $q.reject("rejection message"); // <-- Gotta reject your resolve
}
}
},