2016-05-28 39 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我的问题。 –