我正在尝试向服务器发出ajax请求。我在收集时使用fetch()
方法。它在监控谷歌浏览器网络选项卡后成功从服务器检索数据。
这是一个场景。
我在Model
下方
var Model = Backbone.Model.extend({
urlRoot: '/contacts',
});
collection
以下
var Collection = Backbone.Collection.extend({
model: Model,
url: '/contacts'
});
ViewOne
以下
var ViewOne = Backbone.View.extend({
initialize: function () {
var collection = new Collection().fetch(); // also tried with these options { wait:true, reset: true, async: false }
new ViewTwo({ collection: collection });
}
});
以下是ViewTwo
var ViewTwo = Backbone.View.extend({
initialize: function () {
this.collection.each(this.render, this); // Uncaught TypeError: undefined is not a function
},
render: function () {
console.log(this.model);
}
});
如您所见,我收到Uncaught TypeError: undefined is not a function
错误。
this.render
存在,所以这不是问题。问题是this.collection
上的每个功能。 我该如何解决这个问题?
答案 0 :(得分:2)
只需在fetch的成功回调中创建新视图
var ViewOne = Backbone.View.extend({
initialize: function () {
var collection = new Collection();
collection.fetch({
success:function(){
new ViewTwo({ collection: collection });
}
});
}
});
答案 1 :(得分:1)
Backbone API不流畅,这意味着Collection.fetch
不返回自身,它返回fetch
中使用的Ajax对象。
尝试
var ViewOne = Backbone.View.extend({
initialize: function () {
var collection = new Collection();
collection.fetch();
new ViewTwo({ collection: collection });
}
});
请注意collection.fetch
是异步的,this.collection
在ViewTwo.initialize
中可能为空。例如,请参阅Backbone.js - data not being populated in collection even though fetch is successful。