Angularjs 1.0和1.2之间的角度偏差

Angularjs 1.0和1.2之间的角度偏差,angularjs,angular-ui,angular-ui-bootstrap,Angularjs,Angular Ui,Angular Ui Bootstrap,我发现了一个问题,它向我展示了如何在$http对象上使用有角度的UI引导typeahead。在我将Angular版本更改为1.2RC2之前,它工作得很好(请参见第一个plunk),但现在它失败了。我对角度代码不太了解,无法找出原因。在1.05和1.2之间发生了什么变化以破坏此代码 这项工作: 这个弹跳不起作用: 有关守则 HTML 它在第1564行的Angular UI代码中失败,无法找到匹配项。由于匹配项未定义,因此长度bea。 它与1.2.0-rc2中的这一变化直接相关。以前,当使用sco

我发现了一个问题,它向我展示了如何在$http对象上使用有角度的UI引导typeahead。在我将Angular版本更改为1.2RC2之前,它工作得很好(请参见第一个plunk),但现在它失败了。我对角度代码不太了解,无法找出原因。在1.05和1.2之间发生了什么变化以破坏此代码

这项工作:

这个弹跳不起作用:

有关守则

HTML

它在第1564行的Angular UI代码中失败,无法找到匹配项。由于匹配项未定义,因此长度bea。

它与1.2.0-rc2中的这一变化直接相关。以前,当使用scope.$eval评估函数调用并返回承诺时,它将返回原始承诺对象。实现的更改使承诺返回值自动解析,从而导致值未定义。由于typeahead指令不希望出现这种行为,因此它会崩溃

您可以通过让函数稍微修改一下承诺来暂时解决此问题:

$$v是angular在自动解析承诺时在内部返回的值,它还将承诺的结果分配给该值

我建议坚持使用rc1或等待rc3,因为这个问题和功能可能会改变

只是一些额外的信息-我相信在RC2之前,在作用域上计算的promise对象会自动解析,但返回promises的函数调用不会。做出更改是为了在处理承诺时保持一致的功能。

它与1.2.0-rc2中的这一变化直接相关。以前,当使用scope.$eval评估函数调用并返回承诺时,它将返回原始承诺对象。实现的更改使承诺返回值自动解析,从而导致值未定义。由于typeahead指令不希望出现这种行为,因此它会崩溃

您可以通过让函数稍微修改一下承诺来暂时解决此问题:

$$v是angular在自动解析承诺时在内部返回的值,它还将承诺的结果分配给该值

我建议坚持使用rc1或等待rc3,因为这个问题和功能可能会改变


只是一些额外的信息-我相信在RC2之前,在作用域上计算的promise对象会自动解析,但返回promises的函数调用不会。更改是为了在处理承诺时保持一致的功能。

您提到的黑客攻击并没有解决这个特定问题,但返回到RC1解决了这个问题,我猜RC3将强制解决这个问题。我相信我犯了一个错误,没有坚持1.05。angular团队在更改特征时不应将其标记为RC。RC应该是后测试版。你提到的黑客并没有解决这个问题,但是回到RC1,我猜RC3会在Angular UI中强制解决这个问题。我相信我犯了一个错误,没有坚持1.05。angular团队在更改特征时不应将其标记为RC。RC应该是后测试版。
<html ng-app="plunker">
  <head>
    <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.0-rc.2/angular.js"></script>
    <script src="http://angular-ui.github.com/bootstrap/ui-bootstrap-tpls-0.2.0.js"></script>
    <script src="example.js"></script>
    <link href="//netdna.bootstrapcdn.com/twitter-bootstrap/2.3.1/css/bootstrap-combined.min.css" rel="stylesheet">
  </head>
  <body>

    <alert type="'info'" >Typeahead from  <a href="http://angular-ui.github.com/bootstrap/">http://angular-ui.github.com/bootstrap/</a>"</alert>
    <div class='container-fluid' ng-controller="TypeaheadCtrl">
        <pre>Model: {{result | json}}</pre>
        <input type="text" ng-model="result" typeahead="suggestion for suggestion in cities($viewValue)">
    </div>
  </body>
</html>
angular.module('plunker', ['ui.bootstrap']);
function TypeaheadCtrl($scope, $http, limitToFilter) {

  //http://www.geobytes.com/free-ajax-cities-jsonp-api.htm

  $scope.cities = function(cityName) {
    return $http.jsonp("http://gd.geobytes.com/AutoCompleteCity?callback=JSON_CALLBACK &filter=US&q="+cityName).then(function(response){
      return limitToFilter(response.data, 15);
    });
  };

}
promise.$$v = promise;