【发布时间】:2014-10-04 16:21:17
【问题描述】:
Angular UI 路由器问题
在resolve 块中激活$state.go("main.loadbalancer.readonly"); 时,main.loadbalancer.vips 状态控制器VipListCtrl(仅限控制器)在解析后仍会加载。
既然状态main.loadbalancer.readonly被激活了,我怎样才能让控制器VipListCtrl取消而不加载呢?
我尝试使用一个 Promise,但从来没有解决这个 Promise,但是 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"
});
});
【问题讨论】:
标签: angularjs angular-ui-router