2014-10-02 122 views
1

我试图从控制器更改$state.current.data的值....但此更改未反映在.config(function($ stateProvider){} 。

angular.module("main.loadbalancer", ["ui.bootstrap", "ui.router"]).config(function($stateProvider) { 
    return $stateProvider.state("main.loadbalancer", { 
    data: { readonly : false }, 
    url: "device/:id", 
    views: { 
     "[email protected]": { 
     templateUrl: "loadbalancer/loadbalancer.html", 
     controller: "LoadBalancerCtrl" 
     } 
    } 
    }).state("main.loadbalancer.vips", { 
    url: "/vips", 
    templateUrl: "loadbalancer/vip-table.html", 
    resolve: { 
     isReadonly: function() { 
     console.log(this.data.readonly); 
      console.log("----------------"); 
     if (this.data.readonly) { 
      $state.go("main.loadbalancer.readonly"); 
     } 
     } 
    }, 
    controller: "VipListCtrl" 
    }); 

控制器:。

angular.module('main.loadbalancer').controller('LoadBalancerCtrl', function($scope, $state, SpinnerSvc, LoadBalancerSvc, Account, DeviceValue) { 
    $scope.spinnerOpts = SpinnerSvc.options; 
    return (function(load) { 
    $scope.$on('deviceNumberUpdated', load); 
    return load(); 
    })(function() { 
    return LoadBalancerSvc.getLoadBalancer().then(function(lb) { 
     if (lb.ha_status =="secondary") { 
     $state.current.data = true; 
     console.log($state.current.data); 
     $state.go("main.loadbalancer.readonly"); 
     } else { 
     $state.current.data = false; 
     } 

     Account.id = lb.customer; 
     return $scope.loadBalancer = lb; 
    }); 
    }); 
}); 

回答

1

我不是专家,但我会说,这是不可能的,但我想一个更好的答案

从AngularJS参考 - Module Loading & Dependencies

配置块 - 在供应商登记和配置阶段得到执行。只有提供者和常量可以注入到配置块中。这是为了防止服务在完全配置之前发生意外实例化。