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

Ben*_*ant -1 http promise angularjs 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
}
Run Code Online (Sandbox Code Playgroud)

我的控制器:

mymodule.controller('myCtrl', ['$scope', 'MyService', function($scope, MyService) {
     $scope.myvar = MyService.getData();
}
Run Code Online (Sandbox Code Playgroud)

HTML

<div> {{myvar}} </div>
Run Code Online (Sandbox Code Playgroud)

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

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

小智 5

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

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