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/FooLoaderfooloadの結果でbody コールバックが実行されます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 に答える