1

私は Dojo 1.7 で、非同期読み込みを行っています。

私は ajax を介してコンテンツを入力する contentpane を持っています。このコンテンツでアップローダを宣言的に使用したいのですが、アップローダを適切に要求するにはどうすればよいですか?

これが、コンテンツペインとして設定されるコンテンツを生成するために使用しているサーバーページであるとしましょう:

<script>
require(["dojox/form/uploader/FileList",
    "dojox/form/uploader/plugins/Flash"]);
</script>

<center>
<input type="file" multiple="true" data-dojo-type="dojox.form.Uploader"
    data-dojo-props='
        label:"Foo My Bar!",
        url:"/tests/UploadFile.php",
        uploadOnSelect:"true"'/>
</center>
<br>
<div id="files" data-dojo-type="dojox.form.uploader.FileList"
            data-dojo-props='uploaderId:"uploader"'></div>

しかし、これは機能しません: ウィジェット クラスが見つかりません。これは、ローダーが非同期モードであり、パーサーが必要な呼び出しが完了する前にウィジェットをレンダリングしようとしていることが原因であることを理解しています。

それで、問題は、これを適切に行う方法ですか?アプリのメイン ページに require 呼び出しを配置すると、機能します (メイン ページで宣言的に設定されたウィジェットを含む)。

4

3 に答える 3

1

ページ上で宣言的に参照しているすべてのウィジェット モジュールを require する必要があります。

require(["dojo/parser","dojox/form/Uploader","dojox/form/uploader/FileList"],
  function(parser){
    parser.parse()
});
于 2014-09-01T15:09:23.697 に答える
1

「dojox/form/Uploader」がロードされていないようです...必要ですか?

また、dojo.parser.parse を呼び出すと、いつでも内容を解析できます。コードから最初の構文解析を実行する場合は、Dojo 構成で「parseOnLoad : false」を設定し、「dojo.parser.parse(dojo.body());」を呼び出します。

于 2012-07-07T17:10:16.973 に答える
0

dijit の ContentPane の代わりに dojox/layout/ContentPane を使用してみましたか? dojox の ContentPane タイプは、動的コンテンツでコードを実行できるようにすることで、dijit のタイプから派生しています。また、コンテンツ内のウィジェットを解析するときに、必要なウィジェット参照をロードするようです。

于 2012-11-02T15:23:09.913 に答える