2012-11-04 56 views
0

在下面的插件,Load方法正確調用,但內在回調從來沒有發射:道場需要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是執行d
  2. App/Foo被加載,和
  3. App/FooLoader體回調與foo裝載App/Foo的結果來執行執行內回調。

然而,只有(1)發生,回調(2)和(3)永遠不會發生。怎麼來的?

回答

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/

也許你在你的文件結構有一個錯誤?

+0

謝謝,如果有的話,我看不到它,但是你似乎已經證明我還有其他一些奇怪的東西需要處理。 – Hamish