2017-02-27 4 views
0

解決済み $ stateProviderのプロパティは、コントローラのプロパティを初期化するために使用されます。上記の私の例では

//Config 
.state('init', { 
    url: '/', 
    templateUrl: 'views/Init.html', 
    controller: 'InitController', 
    resolve: { 
     InitData: function(initService, tabService) { 
      var data = initService.mapData(); 

      tabService.field1.IsABC = data.field1.IsABC; //returns the value true (Boolean) 

      return true; 
     } 
    }; 


//Controller (InitController) 
app.controller('InitController', ['$scope', 'tabService', function($scope, $tabService) { 
    $scope.IsABC = $tabService.field1.IsABC; 
}]); 

tabService.field1.IsABCが真の値を割り当てられている場合、同じ値を取得InitController下$ scope.IsABCすべきではありませんか?

+0

は、コードを表示しますあなたはあなたのタブサービスにしてください。 –

+0

tabserviceでは、field1がどのように初期化されるかを示します。 var field1 = {}; –

答えて

0

あなたは

...きちんとサービスに

angular.module('demoApp', ['ui.router']) 
    .factory('myDataFactory', function ($http) { 
    var field1 = {"IsABC":false}; //default false; 
    return { 

     set: function (value) { 
      field1.IsABC = value; 
      return x; 
     }, 
     get: function() { 

      return field1; 
     } 

    }; 
}) 
を "フィールド1" の値を設定していないセット:

resolve: { 
        backendData: function (myDataFactory, $stateParams) { 
         return myDataFactory.set(true); 
        } 
       } 

コントローラーでゲット:

.controller('homeController', function ($scope,myDataFactory) { 

    $scope.hello = myDataFactory.get(); 
    console.log($scope.hello); 
}); 
0

resolveの戻り値は、コントローラの "InitData"に表示されます。コントローラの "InitData"を注入して "true"を取得してください...あなたのサービスの名前も確認してください。それは "タブサービス"ですね。決意で

+0

はい私が必要とする値は、data.field1の値が割り当てられた後にtrueの値を持つべきtabService.field1からの値です。そして、はい、サービスの名前はtabServiceです。 –

関連する問題