2016-05-28 73 views
-1

我有一個工廠,調用服務和獲取響應和傳遞到所述控制器,並試圖以存儲在其中得到未定義未定義的服務響應控制器中使用角度存儲變量?

app.factory('Myservice', function (service1, service2) { 
    return { 
     getService: function (data) { 
      service1("user", encodeURIComponent("pass")).then(function (response) { 

       varSessionData = response.Obj; 

       var queryString = strURL[1].split("&"); 

       Service2.pageLoad(SessionData).then(function (response) { 
        var homeScreen = response; 

        data(homeScreen); 
       }); 
      }); 
     } 
    }; 
}); 

在控制器的變量的響應:

var Mydata = MyService.geService(function (data) { 
    Console.log(data); 
    return data; // getting response 
}); 

$scope.Hello = Mydata; // undefined 

回答

0

將其更改爲以下內容,您的數據未被同步定義。

控制器:

MyService.geService(function(data) { 
    $scope.Hello = data; 
}); 
+0

我有通過$ scope.Hello在另一個服務控制器,這意味着取決於服用的結果Service3.pageLoad($ scope.Hello) 。然後(功能(response){ $ scope.ServiceModelobj = response; console.log(response); } –

0

每當你做任何一個 JAX要求,他們是異步的。這就是爲什麼使用Angular promise(.then方法)的原因。所以,你應該在你的控制器改變你這樣的代碼:

MyService.geService(function (data) { 
    Console.log(data); 
    $scope.Hello = data; 
}); 
0

我已經通過$ scope.Hello在另一個服務控制器,這意味着依賴於從服務取結果。

不工作?

var HomeController = function ($scope, $rootScope, $http, $stateParams, $state, Service3, Myservice) 
{ 

MyService.geService(function (data) { 
    Console.log(data); 
    $scope.Hello = data; 
}); 

Not working 
    Service3.pageLoad($scope.Hello) // not get the value 
     .then(function (response) { 

      $scope.ServiceModelobj = response; 
      console.log(response); 
} 

工作碼

var HomeController = function ($scope, $rootScope, $http, $stateParams, $state, Service3, Myservice) 
{ 

MyService.geService(function (data) { 
    Console.log(data); 
    $scope.Hello = data; 

Working// 
    Service3.pageLoad($scope.Hello) // get the value 
     .then(function (response) { 

      $scope.ServiceModelobj = response; 
      console.log(response); 

}); 
} 
} 
+0

在第一個示例中,第一個服務方法運行,然後在第一個調用之前立即運行第二個服務方法在你的第二個e xample,你在調用第一個回調中的第二個服務,所以它已經定義了。 – Lee

+0

在第二個例子中,我已經在第一個服務裏面使用了第二個服務,那它的返回OK,但是我的問題是有任何其他的方式來傳遞全局的第一個服務響應,我不想把第二個服務放在裏面第一次服務。見未定義的第一個例子,我需要得到價值tats我的問題。 –