AppML が、アクションを実行しようとする時には、コントローラにアプリケーション・オブジェクト($appml)を送信します。
アプリケーション・オブジェクトのプロパティの 1 つは、アプリケーションの状態を示すメッセージ($appml.message)です。
このメッセージをテストすることで、アクションに応じた独自の JavaScript コードを追加することができます。
function myController($appml) {
if ($appml.message == "ready") {alert ("Hello
Application");}
}
Try It Yourself »
次の表は、受信すできる AppML メッセージのリストです:
| メッセージ | 説明 |
|---|---|
| "ready" | AppML が初期化され、データ・ロードの準備が完了後に送信される。 |
| "loaded" | AppML が完全にロードされ、データの表示準備が完了した後に送信される。 |
| "display" | AppML がデータ項目を表示する前に送信される。 |
| "done" | AppML が行われた(表示終了)後に送信される。 |
| "submit" | AppML がデータを送信する前に送信される。 |
| "error" | AppML でエラーが発生した後に送信される。 |
AppML アプリケーションのデータ・ロード準備が完了した時に、"ready" メッセージが送信されます。
これは、初期データ(開始時の値)をアプリケーションに提供するのに最適な場所です:
<div appml-controller="myController" appml-data="customers.js">
<h1>Customers</h1>
<p>{{today}}</p>
<table>
<tr>
<th>Customer</th>
<th>City</th>
<th>Country</th>
</tr>
<tr appml-repeat="records">
<td>{{CustomerName}}</td>
<td>{{City}}</td>
<td>{{Country}}</td>
</tr>
</table>
<p>Copyright {{copyright}}</p>
</div>
<script>
function myController($appml) {
if ($appml.message == "ready") {
$appml.today = new Date();
$appml.copyright = "W3Schools"
}
}
</script>
Try It Yourself »
上の例では、コントローラは $appml.message が "ready" の場合、 アプリケーションに 2 つの新しいプロパティ(today と copyright)を追加します。
アプリケーションを実行すると、新しいプロパティが利用可能になります。
AppML アプリケーションがデータと共にロードされた(表示準備ができた)ときに、 "loaded" メッセージが送信されます。
これは、(必要な場合は)ロードされたデータの変更を提供するのに最適な場所です。
function myController($appml) {
if ($appml.message == "loaded") {
// compute your values here before display
}
}
AppML がデータ項目を表示する直前に、"display" メッセージが送信されます。
これは、出力を変更するのに最適な場所です:
<div appml_app="myController" appml-data="customers.js">
<h1>Customers</h1>
<table>
<tr>
<th>Customer</th>
<th>City</th>
<th>Country</th>
</tr>
<tr appml-repeat="records">
<td>{{CustomerName}}</td>
<td>{{City}}</td>
<td>{{Country}}</td>
</tr>
</table>
</div>
<script>
function myController($appml) {
if
($appml.message == "display") {
if ($appml.display.name ==
"CustomerName") {
$appml.display.value = $appml.display.value.substr(0,15);
}
if ($appml.display.name == "Country") {
$appml.display.value = $appml.display.value.toUpperCase();
}
}
}
</script>
Try It Yourself »
上の例では、"CustomerName" は15文字に切り捨てられ、"Country" は大文字に変換されます。
AppML アプリケーションがデータ表示を完了した時に、"done" メッセージが送信されます。
これは、(表示後に)アプリケーション・データのクリーンアップやを計算するのに最適な場所です。
<script>
function myController($appml) {
if ($appml.message == "done") {
calculate data here
}
}
</script>
AppML アプリケーションがデータ送信の準備が完了した時に、"submit" メッセージが送信されます。
これは、アプリケーションの入力を検証するのに最適な場所です。
<script>
function myController($appml) {
if ($appml.message == "submit") {
validate data here
}
}
</script>
エラーが発生した場合、AppML は "error" メッセージを送信します。
これは、エラーを処理するのに最適な場所です。
<script>
function myController($appml) {
if ($appml.message ==
"error") {
alert ($appml.error.number + " " + $appml.error.description)
}
}
</script>
これは、一般的に使用されるいくつかの AppML プロパティのリストです:
| プロパティ | 説明 |
|---|---|
| $appml.message | アプリケーションの現在の状態。 |
| $appml.display.name | 表示するデータフィールド名。 |
| $appml.display.value | 表示するデータフィールドの値。 |
| $appml.error.number | エラー番号。 |
| $appml.error.description | エラーの説明。 |