【问题标题】:Dojo require in AMD plugin not firing callbackAMD 插件中的 Dojo 要求未触发回调
【发布时间】:2012-11-04 22:09:02
【问题描述】:

在以下插件中,正确调用了 load 方法,但从未触发过内部回调:

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 body 回调执行foo 加载结果App/Foo

但是,只有 (1) 发生,回调 (2) 和 (3) 永远不会发生。怎么会?

【问题讨论】:

    标签: asynchronous dojo


    【解决方案1】:

    它对我有用,如下所示:

    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/

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

    【讨论】:

    • 谢谢,如果有的话我看不到,但你似乎证明了我还有其他的怪事要处理。
    猜你喜欢
    • 1970-01-01
    • 2012-03-26
    • 1970-01-01
    • 2014-10-08
    • 1970-01-01
    • 2015-02-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多