Dee*_*ons 7 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 Next Chapter",
"AverageRating": 4.6,
"ReleaseYear": 2009,
"Url": "http://www.netflix.com/Movie/Lost_Boy_The_Next_Chapter/70171826",
"Rating": "NR"
}]
Run Code Online (Sandbox Code Playgroud)
集合不会调用"重置"事件,因为文档说它应该.我可以在获取方法后查看请求和响应是否正确但没有任何反应.以下是我的应用程序的代码.启动一切的路由器
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();
Run Code Online (Sandbox Code Playgroud)
收藏
Theater.Collections.Movies = Backbone.Collection.extend({
model: Theater.Models.Movie,
url: "scripts/data/data.json",
initialize: function () {}
});
Run Code Online (Sandbox Code Playgroud)
查看订阅重置事件的视图
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")
}
})
Run Code Online (Sandbox Code Playgroud)
http://bardevblog.wordpress.com/2012/01/16/understanding-backbone-js-simple-example/
Rak*_*mer 19
你应该通过在从Backbone 1.0获取时传递{reset:true}来告诉Backbone在fetch上触发重置
替换:
Theater.movies.fetch()
Run Code Online (Sandbox Code Playgroud)
同
Theater.movies.fetch({reset :true})
Run Code Online (Sandbox Code Playgroud)
我也遇到了类似的问题,希望我的回答对其他人有用。起初我的data.json文件无效。后来发现我忽略了下面这行代码:
Theater.Models.Movie = Backbone.Model.extend({}
Run Code Online (Sandbox Code Playgroud)
添加这行代码解决了我的问题。
| 归档时间: |
|
| 查看次数: |
5983 次 |
| 最近记录: |