1

我有一个基于 dojo 的模块,它使用 bang 自动为我加载 dojo/store/Memory。它是这样称呼的:

require( [ 'squad_builder/storeBroker!collectionStore' ],
    function( collectionStore )
{ 
    // use store...
} );

第一个 require() 调用加载存储,随后的调用从缓存中加载存储。

这很好用,但我不知道如何使 require 的内部缓存无效,这样我就可以让下一个请求用新数据加载存储。

require() 中是否有任何内置功能可以执行此操作,或者我是否需要弄乱一些内部工作(如果有,在哪里?)

编辑

文档中它提到:

注意:dojo 加载器包含非标准函数 require.undef,它取消定义模块值。

但是当我调用它时,该方法是未定义的。在 Firebug 中查看 require() :

for( i in require )
{
    console.log( 'require', i, require[ i ] );
}

require.module 有一个def()方法,但没有undef()一个。

编辑 2

Require.cache似乎只包含 dojo 和 dijit 模块。自定义命名空间模块缓存在哪里?

4

1 回答 1

1

根据 dojo 站点,该功能不会自动包含在“已构建”的 dojo 文件中。如果您查看未压缩的 dojo.js,您会在其中看到它。来自:http ://dojotoolkit.org/reference-guide/1.9/loader/amd.html

下表提供了加载程序中使用的选项列表。第一列是加载器中定义的选项/功能,第二个选项是这是检测到的功能(通过 has.add())还是只是一个选项及其默认值。使用“未构建”源,所有功能和选项都可用。如果加载器已经构建,那么其中一些功能可能已设置为 staticHasFeatures 并且不再可配置。

这里还说您可以通过添加一行 go djconfig http://dojo-toolkit.33424.n3.nabble.com/require-undef-td3990559.html重新打开该功能

dojoConfig = { 有 : { "dojo-undef-api": true } }

于 2013-08-19T18:00:43.120 回答