控制器中未定义的服务响应,使用angular?

时间:2016-05-28 09:09:11

标签: angularjs angularjs-directive angularjs-scope

我有一个工厂,调用服务并获取响应并传入控制器并尝试将响应存储在一个未定义的变量中

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

3 个答案:

答案 0 :(得分:0)

将其更改为以下内容,您的数据未同步定义。

控制器:

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

答案 1 :(得分:0)

每当您发出任何 A JAX请求时,它们都是异步的。这就是使用Angular promises的原因(.then方法)。所以你应该在控制器中更改这样的代码:

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

答案 2 :(得分: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);

});
}
}