Angularjs承诺在1.2中不绑定到模板

2024-03-03

升级到 1.2 后,我的服务返回的承诺行为有所不同...... 简单的服务 myDates:

getDates: function () {
           var deferred = $q.defer();

            $http.get(aGoodURL).
                 success(function (data, status, headers, config) {
                     deferred.resolve(data);  // we get to here fine.
            })......

在早期版本中,我可以在我的控制器中执行以下操作:

$scope.theDates = myDates.getDates();

从 getDates 返回的 Promise 可以直接绑定到 Select 元素。 现在这不起作用,我被迫在控制器中提供承诺的回调,否则数据将无法绑定:

$scope.theDates = matchDates.getDates();
$scope.theDates.then(function (data) {
      $scope.theDates = data;  // this wasn't necessary in the past

文档仍然说:

$q 承诺由 Angular 模板引擎识别,这意味着在模板中,您可以将附加到范围的承诺视为结果值。

他们(承诺)在旧版本的 Angular 中工作,但在 1.2 RC3 中,自动绑定在我所有的简单服务中都失败了……关于我可能做错了什么的任何想法。


1.2.0-rc3 中有一些更改,包括您提到的一项:

AngularJS 1.2.0-rc3 猛烈抽搐修复了一些高优先级的问题 $compile 和 $animate 中的问题并为 1.2 铺平道路。 此次发布还介绍一些重要的突破在某些情况下,更改可能会破坏您的指令和模板。请 请务必阅读变更日志以了解这些变更并学习 如果需要,如何迁移您的代码。 有关此版本的完整详细信息,请参阅变更日志 https://github.com/angular/angular.js/blob/master/CHANGELOG.md.

变更日志中有描述:

$parse:

  • due to 5dc35b52 https://github.com/angular/angular.js/commit/5dc35b527b3c99f6544b8cb52e93c6510d3ac577、 $parse 和模板一般都会不再自动解开承诺。此功能已被弃用并且 如果确实需要,可以在过渡期间重新启用 通过$parseProvider.unwrapPromises(true) api.
  • due to b6a37d11 https://github.com/angular/angular.js/commit/b6a37d112b3e1478f4d14a5f82faabf700443748,在 rc.2 中添加的功能,如果值是 Promise(如果 Promise 解包是 已启用 - 请参阅上一点),由于破坏了流行的内容而被恢复 使用模式。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Angularjs承诺在1.2中不绑定到模板 的相关文章

随机推荐