【发布时间】:2012-02-22 04:28:57
【问题描述】:
当请求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"
}]
Collection 不会像文档中所说的那样调用“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/
【问题讨论】:
-
您在哪里收听活动?我期待
this.collection.bind("reset", this.render);或类似的地方 -
集合是否被填充,但没有触发“重置”事件?还是根本没有人居住?你还没有说你是如何监听事件或如何检查集合内容的。
-
@JayC 我不能改变所有这些代码的问题,因此我包含了链接。这与我在这里尝试的完全相同。
Theatre.View.Movies查看重置事件的订阅者。 -
@nrabinowitz 集合没有被填充,即使 json 文件包含数据。我正在收听 View 中呈现 Collection 的事件
-
@PaulD.Waite 是的,页面是服务器,我可以看到所有请求和控制台消息,除了集合被重置。我正在尝试参考站点中提供的完全相同的东西。
标签: javascript ajax events backbone.js underscore.js