Я работаю в WikiPedia API (MediaWiki) и много занимаюсь исследованиями о том, как получить результаты/вставить их в массив. Используя Angular, я, наконец, смог получить успешный "forEach" для работы по этому вопросу.
Моя проблема сейчас, когда я пытаюсь ".append" данных (объект) в HTML, он не работает для меня. Чтобы проверить, я сделал console.log, и он сообщил об объектах и их существовании в консольном журнале, но не уверен, как реально вставить его в форматирование HTML.
Я прикрепил CodePen, который был разветвлен в моем текущем состоянии для обзора. Я новичок в Angular, так что это не мой основной фокус - я не уверен, почему Angular может разбирать объекты, но он действительно работает.
function wiki() {
$('#results').html('');
result = [];
search = $('#search').val();
$.getJSON(link + search, function(wikis) {
var tempRes = wikis.query.pages;
var page = 'http://en.wikipedia.org/?curid=';
angular.forEach(tempRes, function(v, k) {
result.push({
title: v.title,
body: v.extract,
page: page + v.pageid
})
console.log(result);
$('#results').append(result)
})
})
}
Переменные link + search устанавливаются на раннем этапе кода и работают успешно. Любая помощь была бы идеальной - работала над этим бит на некоторое время. Код Pen Link
Редактировать:
После дальнейшего пробного n-ошибки моя проблема была решена путем изменения Append для отражения:
$('#results').append('<li>' + result[i].title + '<br>' + result[i].body+ '<br>' + result[i].page + '</li>')
Я думаю, что просто вытащить результат, или результата [i] было недостаточно, чтобы обеспечить надлежащую модификацию. Я ценю ответы вне темы и советы.
$('#results').append('<li>' + result[i].title + '<br>' + result[i].body+ '<br>' + result[i].page + '</li>')
Была ли стоимость, которая разрешила мою проблему. Мне нужно было добавить точные вызовы, иначе он пытался получить доступ к объекту внутри объекта (и поскольку первый объект случайный, я не мог его увидеть).
Чтобы добавить HTML к элементу, вам нужно сначала его создать. Либо создайте свои теги HTML как строку перед объектами, а затем добавьте или создайте элементы, а затем добавьте:
var html = "";
result.each(function () {
html += buildHtmlFromObject(this);
});
$('#results').append(html);