dma*_*man 0 angularjs angular-ui-router
Angular UI路由器问题
当$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"
});
});
Run Code Online (Sandbox Code Playgroud)
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
}
}
},
Run Code Online (Sandbox Code Playgroud)
plunk演示$ q.reject取消转换:http://plnkr.co/edit/njJtyVbKD4rDY3OckAF6?p = preview
| 归档时间: |
|
| 查看次数: |
2241 次 |
| 最近记录: |