2014-02-28 31 views
0

我正在寫一個util模塊,它包含一個懶惰加載json文件並返回內容的函數,但我似乎無法得到這個工作...RequireJS - 返回惰性加載靜態文件的內容

define([ 
    'require' 
], function (require) { 
    var util = { 
    jsonData: [], 

    getJsonData: function() { 
     require(['require', 'text!dummyData.json'], _.bind(function (require) { 
     this.jsonData.concat(JSON.parse(require('text!dummyData.json'))); 
     }, this)); 
     return this.jsonData; 
    } 
    }; 
    return util; 
}); 

任何想法我做錯了什麼?

回答

0

它不工作,因爲你正在嘗試(和失敗)到return東西從異步功能。所有對require的調用都有一個依賴列表作爲第一個參數是異步的。如果在您的功能中調用require這樣的功能,並且您的功能旨在提供依賴此require調用的返回結果,那麼您的功能是也是異步。

您需要類似下面的代碼,其中getJsonData接受回調並在有數據後調用它。我還更改了require('text!text!dummyData.json')以刪除text!前綴之一,該前綴在那裏沒有業務。

define([ 
    'require' 
], function (require) { 
    var util = { 
    jsonData: [], 

    getJsonData: function (callback) { 
     require(['require', 'text!dummyData.json'], _.bind(function (require) { 
     this.jsonData.concat(JSON.parse(require('text!dummyData.json'))); 
     callback(this.jsonData); 
     }, this)); 
    } 
    }; 
    return util; 
});