javascript - 使用handlebars.js显示多个json对象的值

标签 javascript json ajax loops handlebars.js

我正在尝试显示来自两个单独的 ajax 调用的数据。

我已经开始尝试使用handlebars.js 并设法显示数据,但仅来自一次调用。如何重构我的代码以显示第二次调用的数据?

HTML:

<header>
  <img id="twitch-logo" src="https://upload.wikimedia.org/wikipedia/commons/c/c6/Twitch_logo_%28wordmark_only%29.svg">
</header>

<div id="result-placeholder"></div>
<script type="text/handlebars-template" id="handlebars-template"> 
  {{#each this}}
  <div class="result-wrapper">
    <a href="{{channel.url}}" target="_blank">
      <div><img src="{{channel.logo}}" class="result-logo"></div>
      <div class="result-name">User: {{channel.display_name}}</div>
      <div class="result-game">Currently streaming: {{channel.game}}</div>
    </a>
  </div>
  {{/each}}
</script>

JS:

var streamers = ['monstercat', 'lirik'];

function getStream(name) {
  return $.ajax('https://api.twitch.tv/kraken/streams/' + name + '?callback=?', { dataType: 'JSON' });
}

function displayStream(data) {
  var $placeHolder = $("#result-placeholder");
  var handlebarsTemplate = $("#handlebars-template").html();
  var templateCompile = Handlebars.compile(handlebarsTemplate);
  $placeHolder.html(templateCompile(data)); 
}

streamers.map(function(element) {
  getStream(element)
    .then(displayStream);
});

最佳答案

看起来您正在使用 jQuery 来执行流的 http 获取。我建议查看 jQuery API,并使用 jQuery.when( deferreds ) 来组合 2 个或更多资源的异步获取:

https://api.jquery.com/jquery.when/

关于javascript - 使用handlebars.js显示多个json对象的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37668357/

相关文章:

javascript - Ajax 调用后 JS 库不工作

javascript - ajax 请求中没有 'Access-Control-Allow-Origin',但不是通过单击 <a> 标记链接

json - Ionic3 编码 - 尝试检索当天的报价

json - 如何为json文档中的现有数据添加新字段?

javascript - 将外部对话框与 CKEditor 小部件集成

JavaScript 按钮点击事件每次点击都会触发多次

java - 在不知道格式的情况下解析 JSON(可以是两个不同对象之一)

angularjs - 使用 AngularJs 发布请求时未设置 CSRF Coo​​kie - Django 后端

javascript - JQuery 每行多个输入字段 keyup 功能不起作用

javascript - 在 javascript 的 map 中执行 map ?