Я нашел вопрос SO, который показал мне, как использовать Angular UI — тип Bootstrap с объектом $http. Он работал нормально (см. первый рывок), пока я не изменил версию Angular на 1.2RC2, на которой он сейчас не работает. Я недостаточно хорошо знаю код Angular, чтобы понять, почему. Что изменилось между 1.05 и 1.2, чтобы сломать этот код
Этот планк работает: http://plnkr.co/edit/eGG9Kj?p=preview
Этот планк не работает: http://plnkr.co/edit/HdVBpp?p=preview< /а>
Соответствующий код
HTML
<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>
Javascript
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);
});
};
}
Он не работает внутри кода пользовательского интерфейса Angular в строке 1564, где он не может найти совпадения matches.length
, потому что они не определены.