1

私は(道場で)簡単なクラスを持っています:

define ["dojo/request", "dojo/html", "dojo/on", "dojo/dom"], (request, html, observe, dom) ->
   class Foo
     constructor: (@a) ->
       alert @a

このクラスの新しいオブジェクトを別のファイルに作成します。

require ["Libraries/Foo", "dojo/domReady!"], (Foo) ->
   t = new Foo "test"

FooクラスファイルをJSにコンパイルすると、すべてが問題なく機能しますが、たとえばhttp://jscompress.comコードを使用してJS出力を縮小すると、コードが分割されます。

縮小コードは次のようになります。

// Generated by CoffeeScript 1.4.0
(function(){define(["dojo/request","dojo/html","dojo/on","dojo/dom"],function(e,t,n,r){var i;return i=function(){function e(e){this.a=e;alert(this.a)}return e}()})}).call(this);

コンソール(Safari、Chrome)で私は見ることができます:

TypeError: '[object Object]' is not a constructor (evaluating 'new Foo("test")')

しかし、IDEのツールを使用してコードを再フォーマットすると、すべてが正常に機能します。

改革後のコード:

// Generated by CoffeeScript 1.4.0
(function () {
    define(["dojo/request", "dojo/html", "dojo/on", "dojo/dom"], function (e, t, n, r) {
        var i;
        return i = function () {
            function e(e) {
                this.a = e;
                alert(this.a)
            }

            return e
        }()
    })
}).call(this);

どこで問題が発生する可能性がありますか?

4

1 に答える 1

0

問題が解決しました!async: trueDojo構成で使用します。

于 2013-01-25T15:03:56.400 に答える