Dojo在AMD插件中需要不发射回调



在以下插件中,加载方法是正确调用的,但是内部回调永远不会触发:

define("App/FooLoader", [], function() {
    return {
        load: function(id, require, callback) {
            require(["App/Foo"], function(foo) {
                callback(foo);
            });
        }
    }
});

与上述有关

// in Bar.js
require(['App/Fooloader!'], function(foo) { // do stuff with foo });

那:

  1. App/FooLoader已加载,并且执行load方法
  2. App/Foo已加载,并且执行内部回调
  3. App/FooLoader使用foo执行App/Foo的结果。

但是,仅发生(1),回调(2)和(3)从未发生。怎么来?

它对我有效如下:

define("App/Foo", [], function() {
    return 'bar';            
});
define("App/FooLoader", [], function() {
    return {
        load: function(id, require, callback) {
            console.log('inside load', arguments);
            require(["App/Foo"], function(foo) {
                console.log('inside require, foo=', foo);
                callback(foo);
            });
        }
    }
});
require(["App/FooLoader!"], function(fooload) {
  console.log('fooloaded', fooload);
})​

我创建了这个JSFiddle来演示:http://jsfiddle.net/fmr3z/1/

也许您的文件结构有错误?

最新更新