当前位置: 首页 > 面试题库 >

AngularJS承诺不会绑定到1.2中的模板

韦高阳
2023-03-14
问题内容

升级到1.2后,我的服务返回的promise行为有所不同…简单服务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元素。现在这不起作用,我被迫在控制器中对promise进行回调,否则数据将无法绑定:

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

文档仍然说:

$ qpromise由模板引擎以角度识别,这意味着在模板中,您可以将附加到作用域的promise视为它们的结果值。

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


问题答案:

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

AngularJS 1.2.0-rc3 凶猛抽搐 修复了$ compile和$
animate中的许多高优先级问题,并为1.2铺平了道路。此版本还 引入了一些重要的重大
更改,在某些情况下,这些更改可能会破坏您的指令和模板。请确保阅读更改日志以了解这些更改,并了解如何在需要时迁移代码。有关此版本中的完整详细信息,请参见changelog。

更改日志中有描述:

$解析:

* 由于5dc35b52的缘故,一般而言
$ parse和模板将 不再自动解约
。此功能已被弃用,如果绝对需要,可以在过渡期间通过$parseProvider.unwrapPromises(true)api 重新启用。
* 由于b6a37d11,在rc.2中添加的功能(如果值是promise,则从函数解开返回值)(如果启用了promise
unwrapping-请参见上一点),由于破坏了一种流行的用法模式而被还原。



 类似资料:
  • 问题内容: AngularJS文档说: $ qpromise由模板引擎以角度识别,这意味着在模板中,您可以将附加到作用域的promise视为它们的结果值。 所以有人可以解释一下这种提琴无法正常工作的原因吗?不可能更改文本字段的值。但是分配保证$http服务返回作用域字段的工作就像一个超级按钮。 控制器: HTML: 问题答案: 您需要在promise对象上使用then()函数: 就您而言,我认为您

  • 问题内容: 我正在使用茉莉花对angularjs控制器进行单元测试,该控制器在范围内将变量设置为调用返回promise对象的服务方法的结果: 服务内部: 在我的angularjs应用程序上下文中,这可以正常工作,但在茉莉花单元测试中则无法工作。我已经确认“ then”回调在单元测试中正在执行,但是$ scope.myVar承诺永远不会设置为回调的返回值。 我的单元测试: 另外,如果我将控制器更改为

  • 问题内容: 在我的控制器中,我从另一项服务中获得了承诺。我在其中添加了“ then”子句,但从未调用过“ then”。 看到这个矮人:http ://plnkr.co/edit/dX0Oz1?p=preview (javascript版本) “ fakeLongRunningPromise”会创建一个承诺,该承诺会在2秒后自动解决。 一旦履行了诺言,我便在控制器本身中向控制台发送了一条便条。 我可

  • 问题内容: 我有一个名为PaymentStrategy的服务,已注入我的控制器中。 paymentStrategy中的这种购买方法会触发几种需要顺序调用的方法。当buy()中的所有方法都完成后,需要调用then()。 这可能是微不足道的,但我对棱角还很陌生。 目前,在init()方法之后立即触发buy()。then()。我觉得我们需要将所有这些方法放在一个promise中,并应用$ q.all()

  • 问题内容: 我有一个使用$ resource的简单控制器: 我在指令中使用此控制器(在链接功能中) 但是区域是不确定的。调用是异步的,这很逻辑。 我的问题是我该如何等待结果和区域成为包含所有数据的数组? 这里指令的定义 问题答案: 如果要使用异步方法,则需要通过$ promise使用回调函数,示例如下:

  • 问题内容: 在Angular中,所有内容似乎都具有陡峭的学习曲线,并且对Angular应用程序进行单元测试绝对不能逃脱这种范例。 当我开始使用TDD和Angular时,我觉得我花了两倍(可能更多)的时间来弄清楚如何测试,甚至花更多的时间来正确地设置测试。但是正如Ben Nadel 在他的博客中所说的那样,角度学习过程存在起伏。他的图表绝对是我在Angular的经历。 但是,随着我在学习Angula