0

我正在尝试将模型列表添加到要在本地存储的集合中。我还不完全理解骨干,这才是这个问题的真正原因。

我基本上拉入一个 RSS 提要,将提要中的每个项目分配给一个模型,然后尝试将模型列表放入一个集合中,以便以后可以对其进行迭代。

我收到一条错误消息,提示我需要为集合指定一个 Url。

如果有人可以向我解释实现目标所需遵循的正确流程,那就太好了。

目前我有:

var DetailIndividual = Backbone.Model.extend();     
var DetailsIndividual = Backbone.Collection.extend({
    model: DetailIndividual
});

var Search = Backbone.View.extend({
    events: {
        'click a.individualCast' : 'pullIndividual'
    },
    initialize: function() {
        this.detailsIndividual = new DetailsIndividual();
        _this = this;
        this.detailsIndividual.bind('reset', function(collection) {
            collection.each(function(item) {
                //code to handle update
            });
        });
    },
    pullIndividual: function(e){
        e.preventDefault(); 
        //Logic to pull in RSS feed
        for (var i = 0; i < result.feed.entries.length; i++) {
            entry[i] = new DetailIndividual({ title: result.feed.entries[i].title, link: result.feed.entries[i].link, });
        }
        this.detailsIndividual.add(entry);


    } 
});
4

2 回答 2

1

从这里报告错误,因为模型必须具有 url 属性: http ://backbonejs.org/docs/backbone.html#section-167

你的模型有 url 属性吗?

于 2012-07-11T15:54:51.803 回答
0

您收到错误的原因是因为您正在绑定“重置”事件。'reset' 仅在collection.fetch 或对collection.reset 的显式调用上触发,在您的情况下,您永远不会使用您的集合从服务器获取 - 我假设您的代码中已经有内存中的提要- 因此,除非您明确重置,否则无需监听重置。

在您的代码中,您并没有真正扩展 Collection 和 Model,因此实际上没有必要制作扩展对象 - 只需使用 Backbone.Collection。您甚至不需要创建模型扩展,因为默认情况下,当您添加 JSON 时,会自动创建 Backbone.Model。如果您正在创建一个真正的自定义模型(具有方法覆盖和添加),则只需要分配 collection.model 。

这是您可以加载收藏的一种方式:

var search = Backbone.View.extend({
    events: {
        'click a.individualCast' : 'pullIndividual'
    },
    initialize: function() {
        this.detailsIndividual = new Backbone.Collection();
    },
    pullIndividual: function(e) {
        e.preventDefault(); 
        //Logic to pull in RSS feed
        for (var i = 0; i < result.feed.entries.length; i++) {
            this.detailsIndividual.add({
                title: result.feed.entries[i].title, 
                link: result.feed.entries[i].link
            });
        }
    } 
});

您没有提供任何有关如何解析集合的代码(“重置”除外),但实际上您将从提要中加载集合,如图所示。

于 2012-07-12T01:09:37.627 回答