2014-02-28 29 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; 
});