Как .append из объекта?

0

Я работаю в 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] было недостаточно, чтобы обеспечить надлежащую модификацию. Я ценю ответы вне темы и советы.

  • 0
    Вы на самом деле используете угловой, кроме forEach? У jQuery есть метод, который позаботится об этом ... Черт, у нативных массивов есть метод, который позаботится об этом.
  • 0
    @KevinB Это был обходной путь, который я нашел в MediaWiki - forEach не работал с этим API (по крайней мере, с моим уровнем знаний об этом), потому что он возвращает все как объект.
Показать ещё 2 комментария

2 ответа

1
$('#results').append('<li>' + result[i].title + '<br>' + result[i].body+    '<br>' + result[i].page + '</li>')

Была ли стоимость, которая разрешила мою проблему. Мне нужно было добавить точные вызовы, иначе он пытался получить доступ к объекту внутри объекта (и поскольку первый объект случайный, я не мог его увидеть).

1

Чтобы добавить HTML к элементу, вам нужно сначала его создать. Либо создайте свои теги HTML как строку перед объектами, а затем добавьте или создайте элементы, а затем добавьте:

var html = "";
result.each(function () {
    html += buildHtmlFromObject(this);
});
$('#results').append(html);

Ещё вопросы

Сообщество Overcoder
Наверх
Меню