2012-08-29 63 views
5

我不是很累或者很困惑...但是我不確定...我有一個parse.com的javascript設置(它與backbone.js完全一樣,只是解析而不是主幹)。我有一個模型和一個集合,它都可以工作。但是,要修正JSON();不起作用,它只是在console.log中返回一個[] ...但是如果我在Chromes控制檯中運行相同的函數,它將起作用並返回正確的值。Backbone toJSON

任何幫助!?

所有這些可愛的代碼被包裝準備一個文件中(和它有一些其他的代碼是不是relavent是的,我已經Parse.initialize()倒是它。

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

但是,如果我在Chrome和運行打開控制檯schedule.toJSON();我得到正確的值...正如你所看到的,我已經對我的backbone.js安裝程序進行了修改,試圖弄清楚這一點(因爲你想知道爲什麼一切都在這個地方)。小提示,我使用Zepto.js而不是jQuery。

謝謝!

回答

19

可能在執行schedule.toJSON()時,它仍然是空的。

請記住,Collection.fetch()是一個異步方法。

試圖修改這一行:

schedule.fetch(); 

通過這樣的:

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

(也許你會拿出一個上下文問題儘量讓schedule變量可以接觸到success處理程序)