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});