Javascript Backbone.js集合不调用;重置";获取操作后的事件
请求Javascript Backbone.js集合不调用;重置";获取操作后的事件,javascript,ajax,events,backbone.js,underscore.js,Javascript,Ajax,Events,Backbone.js,Underscore.js,请求data.json文件以填充包含以下数据的集合时 [{ "Id": "BVwi1", "Name": "Bag It", "AverageRating": 4.6, "ReleaseYear": 2010, "Url": "http://www.netflix.com/Movie/Bag_It/70153545", "Rating": "NR" }, { "Id": "BW1Ss", "Name": "Lost Boy: The
data.json
文件以填充包含以下数据的集合时
[{
"Id": "BVwi1",
"Name": "Bag It",
"AverageRating": 4.6,
"ReleaseYear": 2010,
"Url": "http://www.netflix.com/Movie/Bag_It/70153545",
"Rating": "NR"
}, {
"Id": "BW1Ss",
"Name": "Lost Boy: The Next Chapter",
"AverageRating": 4.6,
"ReleaseYear": 2009,
"Url": "http://www.netflix.com/Movie/Lost_Boy_The_Next_Chapter/70171826",
"Rating": "NR"
}]
集合不会像文档所说的那样调用“重置”事件。我可以在fetch方法之后查看请求和响应是否正确,但什么也没有发生。下面是我的应用程序的代码。
开始就是一切
Theater.Router = Backbone.Router.extend({
routes: {
"": "defaultRoute"
},
defaultRoute: function () {
Theater.movies = new Theater.Collections.Movies()
new Theater.Views.Movies({
collection: Theater.movies
});
Theater.movies.fetch();
}
})
var appRouter = new Theater.Router();
Backbone.history.start();
藏品
Theater.Collections.Movies = Backbone.Collection.extend({
model: Theater.Models.Movie,
url: "scripts/data/data.json",
initialize: function () {}
});
订阅重置事件的视图
Theater.Views.Movies = Backbone.View.extend({
initialize: function () {
_.bindAll(this, "render", "addOne");
this.collection.bind("reset", this.render);
this.collection.bind("add", this.addOne);
},
render: function(){
console.log("render")
console.log(this.collection.length);
},
addOne: function (model) {
console.log("addOne")
}
})
参考站点
如果未填充集合,则获取可能会出现问题。请参阅,了解如何将错误处理程序传递到获取操作。我也遇到了类似的问题,希望我的回答对其他人有用。起初,我的
data.json
文件无效。后来发现我忽略了以下代码行:
Theater.Models.Movie = Backbone.Model.extend({}
添加这行代码为我解决了这个问题。从主干网1.0开始提取时,您应该通过传递{reset:true}来告诉主干网在提取时启动重置 替换:
Theater.movies.fetch()
与
我也有同样的运气。。并通过以下方式进行修复:
youColloection.fetch({reset: true});
你在哪里听这个节目?我期待一个
this.collection.bind(“reset”,this.render)
或类似的东西正在填充集合,但没有触发“重置”事件?还是根本没有人居住?您没有说明如何收听事件或如何检查集合内容。@JayC我无法对问题进行修改,因为所有这些代码都将包含此链接。这和我在这里尝试的完全一样Theatre.View.Movies
View subs到重置事件。@即使json文件包含数据,也没有填充nrabinowitz集合。我正在收听的事件,在视图中呈现Collection@PaulD.Waite是的,页面是服务器&我可以看到所有的请求和控制台消息,除了集合被重置。我正在尝试和参考网站中提供的完全相同的东西。整个代码并没有问题,但IIS一直在搞乱一些东西。我试过使用twitter json服务的live feed,效果非常好。你知道为什么会改变吗?它似乎使代码更可读、更易懂,你很容易看到,你希望集合在获取时做些什么。另一个原因可能是为了提高效率而减少触发的事件数。这只是假设,我在网上找不到相关的文档。
youColloection.fetch({reset: true});