2015-06-04 29 views
0

我在$.each内部使用$.get来调用一个外部Moustache模板以用于数组中的每个Photo对象。

这里是我的代码:

$.when.apply($, requests).then(function(dataOne, dataTwo) { 
    $.each(dataOne, function(idx, obj) { 
     $.get("myTemplate.mst", function(template) { 
      var rendered = Mustache.render(template, obj); 

      $photoElem.html(rendered); 
     }); 
    }); 
}); 

我的问题是,一旦我刷新屏幕,只有我的数组对象之一出现。我知道{{#item}}迭代通过阵列,但我使用$.each为一个非常具体的原因。

有人能告诉我我做错了什么吗?

+2

作为一个侧面说明:为提高效率,求你应该只'的GET'模板一次,并将其分配给一个变量用于所有照片。 – Andy

+0

什么是$ photoElem?提供更多信息。假设问题导致您替换$ photoElem的内容(使用.html())而不是追加每个新项目 –

+0

嘿@VasilVanchuk $ photoElem只是缓存的$(“。PhotoElem”)'容器。 – Wilhelm

回答

2

试试这个

$.when.apply($, requests).then(function(dataOne, dataTwo) { 
     $.get("myTemplate.mst", function(template) { 
      $.each(dataOne, function(idx, obj) { 
      var rendered = Mustache.render(template, obj); 
      $photoElem.append(rendered); 
     }); 
    }); 
}); 

假设问题导致您更换$ photoElem的内容(使用的.html()),而不是追加每个新项目

我.append取代的.html()(

而改变代码来读取模板只有一次(如@Andy说)

+0

这很快。实际上,为什么'.html()'不起作用,我用每次迭代都替换了放入对象内的每个对象。谢谢Vasil。 – Wilhelm

相关问题