Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/468.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 无法从模板中的访问Backbone.js集合/模型_Javascript_Backbone.js - Fatal编程技术网

Javascript 无法从模板中的访问Backbone.js集合/模型

Javascript 无法从模板中的访问Backbone.js集合/模型,javascript,backbone.js,Javascript,Backbone.js,我正在努力将Backbone.js中的模型集合传递到模板中。每次我尝试访问模型(即this.collection.models)时,我只会得到一个空数组,即使我知道集合包含两个类型为Contact的模型。我确信我在这里遗漏了一些基本的东西。将模型传递到Backbone.js模板的标准方式是什么 以下是模型、集合和视图定义(实际视图是从Backbone.js router函数中调用的-为简洁起见,此处不包括路由器的源代码): var Contact=Backbone.Model.extend({

我正在努力将Backbone.js中的模型集合传递到模板中。每次我尝试访问模型(即this.collection.models)时,我只会得到一个空数组,即使我知道集合包含两个类型为Contact的模型。我确信我在这里遗漏了一些基本的东西。将模型传递到Backbone.js模板的标准方式是什么

以下是模型、集合和视图定义(实际视图是从Backbone.js router函数中调用的-为简洁起见,此处不包括路由器的源代码):

var Contact=Backbone.Model.extend({
urlRoot:“/contacts.json”,
idAttribute:“\u id”,
解析:函数(响应){
返回响应;
}
});
var Contacts=Backbone.Collection.extend({
型号:Contact,
url:“/contacts.json”,
解析:函数(响应){
返回响应数据;
}
});
var ListContactsView=Backbone.View.extend({
el:$(“#内容”),
模板:35;.template($('#列出联系人tpl').html()),
初始化:函数(){
this.collection=新联系人();
this.collection.fetch();
这个。render();
},
render:function(){
console.log(this.collection);
this.$el.html(this.template({contacts:this.collection.models}));
}
});
模板定义如下:


如果您的代码确实如问题中所示,那么问题在于您在
获取
返回之前呈现视图,这就是您的集合为空的原因。
fetch
需要一段时间才能返回,但是在调用
fetch
之后,您会立即调用
render


调用
fetch
函数的成功处理程序中的
render
,或者将
render
绑定到集合的
reset
事件。

感谢您的快速响应。将重置事件绑定到集合就成功了。然而,为了让它工作,我必须从视图的initialize()方法中使用uz.bindAll()将render方法额外绑定到视图对象。