0

在以下插件中,正确调用了 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/FooLoaderbody 回调与fooloading 的结果一起执行App/Foo

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

4

1 回答 1

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/

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

于 2012-11-05T01:01:01.877 回答