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」イベントをバインドしているためです。'reset'は、collection.fetchまたはcollection.resetの明示的な呼び出しでのみ発生します。この場合、コレクションを使用してサーバーからフェッチすることはありません。コードから、既にメモリにフィードがあると想定しています。 -したがって、明示的にリセットしない限り、リセットをリッスンする必要はありません。

コードでは、実際にはCollectionとModelを拡張していないため、実際には拡張オブジェクトを作成する必要はありません。Backbone.Collectionを使用するだけです。デフォルトでは、JSONを追加すると、Backbone.Modelが自動的に作成されるため、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 に答える