2014-10-02 150 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

配置塊 - 在供應商登記和配置階段得到執行。只有提供者和常量可以注入到配置塊中。這是爲了防止服務在完全配置之前發生意外實例化。