2017-02-27 16 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已分配的真實價值,不應該是$ scope.IsABC的InitController下得到同樣的價值?

+0

顯示代碼你有你的tabservice請。 –

+0

在tabservice中,這是field1初始化的方式: var field1 = {}; –

回答

0

您沒有在服務正確設置的 「字段1」 的價值......在解決

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

    }; 
}) 

集:

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

獲取控制器:

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

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

解析中的返回值將出現在控制器的「InitData」下。在您的控制器中注入「InitData」以獲得「true」...同時檢查您的服務的名稱。這是「tabService」,不是嗎?

+0

是的我明白,但我需要的值是一個來自tabService.field1的值,該值在賦予data.field1的值後應該爲true。是的,服務的名稱是tabService。 –