Angular $ q和$ http用于数据绑定不起作用

时间:2014-11-02 15:29:59

标签: angularjs http promise q angular-promise

我正在尝试使用服务制作基本数据,并在我有数据时将其打印在屏幕上,但有些东西无效。

我的服务:

mymodule.factory('MyService', function($http, $q) {
    var service = {
        getData: function() {
            var dfd = $q.defer();
            $http.get(apiServerPath).success(function (data) {
                dfd.resolve(data);
            });
            return dfd.promise;
        }
    }

    return service
}

我的控制器:

mymodule.controller('myCtrl', ['$scope', 'MyService', function($scope, MyService) {
     $scope.myvar = MyService.getData();
}

HTML

<div> {{myvar}} </div>

我可以从浏览器控制台看到 -

  1. myvar对象变成了承诺对象
  2. 正在调用成功函数,“数据”中包含有效数据
  3. 对于我的问题和问题 - 当延迟对象解析时,控制器的变量不会改变 - 为什么?

1 个答案:

答案 0 :(得分:5)

从Angular 1.2开始,Promise不再自动解包。在您的控制器中执行以下操作:

mymodule.controller('myCtrl', ['$scope', 'MyService', function($scope, MyService) {
     MyService.getData().then(function success(data) {
       $scope.myvar = data;
     });
}