Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angularjs Ui路由器解析-取消状态控制器加载?_Angularjs_Angular Ui Router - Fatal编程技术网

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
        }
      }
    },