0
Tutorial.Views.Layout = Backbone.Layout.extend({
  model: Tutorial.Model,
  });

initialize: function () {
  _.bindAll(this);
  this.model = new Tutorial.Model({id : $("#data").data('user') });
  this.collection = new Tutorial.Collection();
  var success1 = function(){

         console.log('OK');

     };
     this.collection.fetch({success : success1});

},

showTuto: function(){

  step = this.collection.first(1);
  console.log(step);
},

私の問題は、コレクションが空であることです。私のモデルには 4 つのアイテムがありますが、どれも表示されません。

前もって感謝します

4

1 に答える 1

1

より詳細な提案を行うには、さらにいくつかのコードを確認する必要がありますが、この説明がお役に立てば幸いです。モデルをコレクションに直接渡すか、フェッチで処理する必要があります。

//simplified view
YourView = Backbone.View.extend({
    initialize : function(){
         var testModel = new Tutorial.Model({id : $("#data").data('user') });
         this.collection = new Tutorial.Collection();
         this.collection.add(testModel);
    }
});

この場合、そのモデルをコレクションに直接追加します。非同期で呼び出してフェッチからデータを取得してからコールバックを渡したい場合は、次のようにすることができます。

//simplified view
    YourView = Backbone.View.extend({
        initialize : function(){
             this.collection = new Tutorial.Collection();
             this.collection.fetch(function(){
                  console.log('okay');
             });
        }
    });

    Tutorial.Collection = Backbone.Collection.extend({
        fetch : function(callback){
             // grab a ref to your collection
             var thisCollection = this;

             // call your data function which has the ajax call
             getYourDataFunction(function(data){
                  // if your data returned is an array of objects
                  thisCollection.add(data);

                  if (typeof callback === "function"){
                       //if you included a callback, call it with a reference to the collection
                       callback.call(thisCollection);
                  }
             });
        });
    });
于 2013-02-26T21:44:18.603 に答える