HandlebarsJS+BackboneJS通过JSON数组循环
HandlebarsJS + BackboneJS Loop through array of JSON
我想显示一个按首字母排序的音乐艺术家列表。
所以我有这个主干视图:
function (App, Backbone, utils) {
// Create a new module.
var AllArtists = App.module();
// Create view
AllArtists.View = Backbone.View.extend({
template: 'allArtistsList',
initialize: function() {
//this.listenTo(this.collection, 'sync', this);
},
afterRender: function(){
var col1 = new Backbone.Collection();
col1.url = App.APIO + '/i/search/artist?name=a';
col1.fetch({success: function(){
console.log(col1);
}});
this.insertView('.artistsA', new AllArtists.View({collection: col1}));
var col2 = new Backbone.Collection();
col2.url = App.APIO + '/i/search/artist?name=b';
col2.fetch({success: function(){
console.log(col2);
}});
this.insertView('.artistsB', new AllArtists.View({collection: col2}));
}
});
return AllArtists;
}
然后我有了我的Handlebars HTML:
<div class="artistsA">
{{#each this}}
<a href="{{name}}">{{name}}</a>
{{/each}}
</div>
到目前为止,我的JSON看起来是这样的(在本例中是字母a):
data: [
{
artist_id:78,
name:A Band Of Boys
},
{
artist_id:79,
name:a Beautiful Friend
},
{
artist_id:80,
name:A Camp
}
etc. etc...
我可以看到我的console.log返回了数据,但我得到了一个空白页,所以它表明我的Handlebars有问题?我做错了什么?
基本上fetch()是异步的,它会在内部调用异步的Ajax请求。一旦获取调用成功,即在成功回调时,您必须调用insertView()
。您正在观察空白页,因为您正试图在获取数据之前调用insertView()。
如果你想让它同步请求,你可以使用属性{async:false}
col1.fetch({async:false});
相关文章:
- 如何将angularjs中的javascript字符串输出为循环数组
- 如何从某个位置顺时针和逆时针循环数组
- 赢得't循环数组javascript
- 通过循环数组内容
- 使用RegExp循环数组而不是for循环(Javascript)
- 如何在背景图像的循环数组中预加载图像
- 如何在循环数组内部推送变量值
- Javascript循环数组无限不起作用
- 如何循环数组
- 如何使用Handlebars循环数组对象和模板
- PHP同时循环数组数据显示到javascript中
- 如何使用上一个/下一个功能循环数组中的图像
- 如何循环数组并保持它们之间的索引增长
- Javascript循环数组以查找可被3整除的数字
- 以变量作为属性的循环数组
- 嵌套的“for”循环 - 数组未定义
- 在具有主干和车把的模型中循环数组
- 数组在 for 循环与第二个 for 循环数组 JavaScript 合并
- 对于javascript和jquery的循环数组问题
- 在循环数组 javascript 后替换对象属性值中的字符串