2012-08-29 14 views
5

私は大変疲れているか、本当に混乱しています...しかし、私は確信していません...私はparse.comのjavascriptセットアップを持っています(backbone.jsとまったく同じです。そして私にはモデルとコレクションがあり、それはすべて機能します。しかし、ヤンゴンtoJSON();それはちょうどconsole.logで[]を返します...しかし、私がChromesコンソールで同じ機能を実行しても動作し、正しい値を返します。バックボーンtoJSON

助けてください!

すべてこの素敵なコードは準備ができて、文書に包まれた(そして、それはのrelaventはないとはい、私は「

var Schedule = Parse.Object.extend({ 
    className: "schedule" 
    }); 

    var ScheduleList = Parse.Collection.extend({ 
    model: Schedule 
    }); 

    schedule = new ScheduleList(); 
     schedulejs3 = schedule.toJSON(); 
     schedule.query = new Parse.Query(Schedule); 
     schedule.query.ascending("date"); 
     schedule.query.limit('500'); 
     schedulejs2 = schedule.toJSON(); 
     schedule.fetch(); 

     schedulejs = schedule.toJSON(); 
     console.log(schedulejs,schedulejs2,schedulejs3); <-- All three return [] 

    var ScheduleView = Parse.View.extend({ 
    el: $("#schedule-holder"), 
    initialize: function() { 
     this.schedule = new ScheduleList(); 
     this.schedule.query = new Parse.Query(Schedule); 
     this.schedule.query.ascending("date"); 
     this.schedule.query.limit('500'); 

     this.schedule.fetch(); 

     this.schedule.js = this.schedule.toJSON(); 

     this.render; 
    }, 

    render: function() { 
     var template = Handlebars.compile($("#schedule-item").html()); 
     $(this.el).html(template({shows: this.schedule.toJSON()})); 
     return this; 
    } 
    }); 

    var App = new ScheduleView().render(); 

。それをParse.initialize() dは持っていますが、私はChromeとランでコンソールを開くと、いくつかの他のコードを持っていましたさあなたが見ることができるように、私はバックボーンを突きつけてしまいました.JSのセットアップは、これを理解しようとしています(あなたがすべての場所にすべての理由があるのか​​疑問に思っています)。小さなメモ、私はjepto.jsをjQueryではなく使用しています。

ありがとう!

答えて

19

おそらくschedule.toJSON()を実行した時点ではまだ空です。

Collection.fetch()は、非同期メソッドです。

この行を変更してみてください。これにより

schedule.fetch(); 

schedule.fetch({ success: function() { console.log("what about now?", schedule.toJSON()) } }; 

(おそらくあなたはコンテキスト問題が付属していますschedule変数がsuccessハンドラにづけしするようにしよう)

関連する問題