如何从对象中.append?

时间:2015-09-22 21:07:31

标签: javascript html angularjs api

我在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)
  })
})
}

链接+搜索变量在代码的早期建立,并且成功运行。 任何帮助都是完美的 - 已经有一段时间了。 Code Pen Link

编辑:

进一步尝试n-error后,我的问题通过修改Append to reflect:

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

我认为只是拉结果,或结果[i]不足以提供适当的修改。我很欣赏离题回复和建议。

2 个答案:

答案 0 :(得分:1)

为了将HTML附加到元素,您需要先构建它。要么将HTML标记构造为对象前面的字符串然后追加,要么创建元素然后追加:

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

答案 1 :(得分:1)

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

是否解决了我的问题。我需要附加确切的调用,否则它试图访问对象中的对象(并且由于第一个Object是随机的,我无法预见它。)