これにはしばらく時間がかかりました。しばらく。一度に 2 つの問題 (リファクタリングで修正された循環依存関係、およびこの問題) と戦いました。この問題を JSFiddle に入れるには、多くの作業が必要でした... しかし、それだけの価値はあったと思います。そう:
3 つのウィジェットを定義します。
r.AppMainScreen -- これはメイン アプリのウィジェットです。簡単: たくさんのタブと、次のような単純なボタンを含むボタンだけです。
// SUbmit form this.form.onSubmit = function(e){ e.preventDefault(); console.log("HERE"); dialog = new r.RetypePasswordDialog(); dialog.show(); return false; }
かなり面白くない。
r.RetypePasswordDialog() -- ダイアログ ボックスを表すテンプレート化されたウィジェット。それについての唯一の興味深い点は次のとおりです。
< input name="password" id="${id}_password" data-dojo-attach-point="password" data-dojo-type="app.ValidationPassword" />
これは、まさにこのファイルで定義された単純なカスタム ウィジェットであり、検証を行います。注: この小さな作業のためにここにサブクラスを用意しても意味がないことはわかっています。これは一例であることに注意してください。
- r.ValidationPassword()
いくつかの追加の検証を備えた拡張された ValidationTextBox。
ボタンをクリックすると、次のようになります。
Uncaught Error: Could not load class 'app.ValidationPassword
…?!? app.ValidationPassword は確実に定義されています。そこにあるはずです。最初は、循環依存関係が原因だと思っていました (昨日はとても楽しかったです: この問題を理解しようとしながら、AMD 循環依存関係について学ばなければなりませんでした...)
この行のコメントを外すと、スクリプト内で実行されます。
TEST = new r.RetypePasswordDialog();
全体が機能します。それは無意味な例であり、一体なぜこれが違いを生むのか、またはそうすべきなのか理解できません。
説明は大歓迎です...見つかりませんでした!
ありがとうございました、
メルク。