私は道場と初心者を学んでいます。Dojoを使用してインターフェイスからテキストファイルをロードして編集したいと思います。道場のどのコンポーネントでこれで十分か教えてください。
1 に答える
私のコメントへの回答から、私の理解では、あなたは次のことをしたいということです:
- Web ページのフォームにファイル名を入力します。
- その後、Dojo はその特定のテキスト ファイルをサーバーからロードします。
- 次に、ファイルを何らかの編集コンポーネントで画面に表示する必要があります。
- 次に、ユーザーはファイルをサーバーにポストバックする機能を必要とします。
最善の方法は、 dojo/requestを使用してテキスト ファイルを取得し、それを再度使用してポストバックすることだと思いました。さまざまなdojo dijitを使用して、選択と表示を行うことができます。
非常に大まかな解決策は次のとおりです。
<form data-dojo-type="dijit/form/Form">
<input type="text" id="fileName" data-dojo-type="dijit/form/TextBox" />
<button data-dojo-type="dijit/form/Button" type="button">Get
<script type="dojo/on" data-dojo-event="click">
require([
"dijit/registry",
"dojo/request"
], function(registry, request) {
var fileName = registry.byId("fileName").get("value");
request(fileName, {
"handleAs": "text"
}).then(function(content){
registry.byId("content").set("value", content);
});
});
</script>
</button><br /><br />
<textarea id="content" data-dojo-type="dijit/form/TextBox"></textarea>
<button data-dojo-type="dijit/form/Button" type="button">Send
<script type="dojo/on" data-dojo-event="click">
require([
"dijit/registry",
"dojo/request"
], function(registry, request) {
var content = registry.byId("content").get("value");
request("myhandler.php", {
"method": "post",
"data": {
"content": content
}
}).then(function(content){
// deal with the response
});
});
</script>
</button>
</form>
これにより、テキスト ボックスに入力したファイル名のテキスト ファイルが読み込まれます ( getをクリックした後)。コンテンツは編集のためにテキストエリアにロードされ、 sendをクリックしてサーバースクリプトに送り返すことができます。
これは私が言ったように、「非常に粗雑な例」です。ただし、サーバーとの間で情報を送受信するためのdojo/requestの使用を示しています。明らかに、適切なタイミングでウィジェットを非表示/表示する、より洗練されたソリューションが必要です。おそらく、ファイル名のテキストボックスを、サーバーコードを介して入力されたある種のコンボに置き換えたいと思うでしょう...など.
すべてをマークアップで宣言するのではなく、操作全体をカプセル化する独自のウィジェットを作成することをお勧めします。dojo/requestを使用して、サーバーから json ファイルをロードし、コンボ ボックスに入力してファイルを選択することができます。また、返信される情報が信頼できるソースからのものであることを確認する必要があります。
重要!これは、テキスト ファイルと Web ページが同じドメインにある場合にのみ機能します。クロスドメイン リクエストでは機能しません。クロスドメインを実行する場合は、json ソリューションを作成する必要があります。