Поэтому я работал над двумя простыми приложениями с угловыми углами в составе Free Code Camp, и я получаю смешанные результаты. В первом приложении все работает нормально. Я делаю $http.get()
, возвращается массив объектов, и я могу использовать ng-repeat
(ключ в ARRAY) для заполнения моей страницы данными. Это перо можно найти здесь: http://codepen.io/StephenMayeux/pen/ZbBgap
Мое второе приложение практически то же самое (вызов API, на этот раз с Википедией), но вместо GET он использует $http.json()
потому что для получения любых данных из Википедии требуется JSONP
(а не CORS). Короче говоря, я могу разобрать эти данные и нажать на массив.
И у меня есть хороший массив объектов, с которыми я мог бы перебирать с помощью ng-repeat... но ничего не происходит. Вот ссылка на это перо, или вы можете посмотреть на код ниже: http://codepen.io/StephenMayeux/pen/WQRawr
(function() {
var app = angular.module('wikipedia', []);
app.controller('WikiController', ['$http','$scope', function($http, $scope) {
$scope.search = { text: '' };
var api = 'http://en.wikipedia.org/w/api.php?format=json&action=query&generator=search&gsrnamespace=0&gsrlimit=10&prop=pageimages|extracts&pilimit=max&exintro&explaintext&exsentences=1&exlimit=max&gsrsearch=';
var apiEnding = '&callback=JSON_CALLBACK';
var pageUrl = 'http://en.wikipedia.org/?curid=';
$scope.search = function() {
var final = [];
$http.jsonp(api + $scope.search.text + apiEnding).success(function(data) {
var results = data.query.pages
angular.forEach(results, function(v,k) {
final.push({title: v.title, body: v.extract, page: pageUrl + v.pageid})
})
console.log(final);
});
};
}]);
})();
<html ng-app="wikipedia">
<body ng-controller="WikiController">
<div class="container">
<h1>Wikipedia Search Engine</h1>
<form class="form-inline" novalidate>
<div class="form-group">
<label class="sr-only" for="searchInWikipedia">Search Wikipedia by using this textbox</label>
<input type="text" class="form-control" ng-model="search.text" placeholder="What do you want to learn about today?">
</div>
<button type="submit" class="btn btn-primary" ng-click="search()"><span class="glyphicon glyphicon-search"> Search</span></button>
</form>
<div >
<div id="search-results" ng-repeat="key in final">
<h3>{{key.title}}</h3>
<p>{{key.body}}</p>
</div>
</div>
</div>
</body>
</html>
У меня есть:
1) проверяется на наличие опечаток.
2) напечатано на консоли, и я определенно получаю массив объектов.
3) используется только Angular, и нет других библиотек, таких как jQuery, которые потенциально могут противоречить моему коду.
Любые идеи или указатели?
Вот ручка: http://codepen.io/anon/pen/gambae
$scope.final = [];
Вам нужно добавить в область действия вещи, которые вы хотите показать на экране.