【问题标题】:Angular $q and $http for data binding not working用于数据绑定的 Angular $q 和 $http 不起作用
【发布时间】:2014-12-29 07:49:00
【问题描述】:

我正在尝试使用服务进行基本数据提取,并在我有数据时将其打印在屏幕上,但有些东西不起作用。

我的服务:

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 对象变成一个 promise 对象
  2. 正在调用成功函数,并且“数据”中包含有效数据
  3. 对于我的问题和问题 - 解析延迟对象时控制器的变量不会改变 - 为什么?

【问题讨论】:

标签: angularjs http promise q angular-promise


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 2016-02-21
    • 2017-11-17
    • 2019-04-09
    • 1970-01-01
    • 2015-06-06
    • 2018-01-11
    • 2020-06-28
    • 2017-12-15
    • 2015-06-19
    相关资源
    最近更新 更多