请求用于填充具有以下数据的集合的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"
}]
集合不会像文档所说的那样调用"Reset"事件。我可以在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")
}
})
参考网站
http://bardevblog.wordpress.com/2012/01/16/understanding-backbone-js-simple-example/
从Backbone 1.0 开始提取时,您应该告诉Backbone在提取时通过传递{reset:true}来触发重置
替换:
Theater.movies.fetch()
带
Theater.movies.fetch({reset :true})
我也遇到过类似的问题,我希望我的回复对其他人有用。起初,我的data.json
文件无效。后来发现我忽略了以下代码行:
Theater.Models.Movie = Backbone.Model.extend({}
添加这行代码为我解决了问题。
如果没有填充集合,那么您的获取可能会出现问题。请参阅此答案,了解如何将错误处理程序传递到获取操作中。
我有相同的iusse。。并通过修复
youColloection.fetch({reset: true});