AppML 消息
AppML 消息与操作
当 AppML 即将执行一个操作时,它将应用程序对象($AppML)发送给控制器。
应用程序对象的属性之一是描述应用程序状态的消息($appml.message)。
通过测试此消息,您可以根据操作添加自己的 JavaScript 代码。
实例
<!DOCTYPE html><html><title>Customers</title><link rel="stylesheet" href="/example/appml/style.css"><script src="https://cankaoshouce.com/js/appml/appml.js"></script><body><div appml-controller="myController" appml-data="/example/appml/customers.js"><h2>Customers</h2><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 == "ready") {alert("Hello AppML!");}}</script></body></html>
AppML 消息
这是可以接收的 AppML 消息列表:
| 消息 | 描述 |
|---|---|
| ready | AppML 启动并准备加载数据后发送 |
| loaded | AppML 完全加载后发送,准备显示数据 |
| display | 在 AppML 显示数据项之前发送 |
| done | AppML 完成后发送(显示完成) |
| submit | 在 AppML 提交数据之前发送。 |
| error | 在 AppML 遇到错误后发送 |
"ready" 消息
当 AppML 应用程序准备加载数据时,它将发送一条 "ready" 消息。
这是为应用程序提供初始数据(起始值)的最佳地方:
实例
<!DOCTYPE html><html><title>Customers</title><link rel="stylesheet" href="/example/appml/style.css"><script src="https://cankaoshouce.com/js/appml/appml.js"></script><body><div appml-data="/example/appml/customers.js" appml-controller="myController"><h2>Customers</h2><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 = "cankaoshouce"}}</script></body></html>
在上面的示例中,当 $appml.message 为 "ready",控制器将向应用程序添加两个新属性(today 和 copyright)。
当应用程序运行时,新属性对应用程序可用。
"loaded" 消息
当 AppML 应用程序加载数据(准备显示)时,它将发送一条 "loaded" 消息。
这是对加载的数据进行更改(如有必要)的最佳地方。
实例
function myController($appml) {if ($appml.message == "loaded") {// compute your values here before display}}
"display" 消息
每次 AppML 显示数据项时,它都会发送一条 "display" 消息。
这是修改输出的最佳位置:
实例
<!DOCTYPE html><html><title>Customers</title><link rel="stylesheet" href="/example/appml/style.css"><script src="https://cankaoshouce.com/js/appml/appml.js"></script><body><div appml-controller="myController" appml-data="/example/appml/customers.js"><h2>Customers</h2><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></body></html>
在上面的实例中,"CustomerName" 被截断为 15 个字符,"Country" 被转换为大写。
"done" 消息
AppML 应用程序完成数据显示后,将发送一条 "done" 消息。
这是清理或计算应用程序数据(display 之后)的理想地方。
实例
<script>function myController($appml) {if ($appml.message == "done") {calculate data here}}</script>
"submit" 消息
当 AppML 应用程序准备好提交数据时,它将发送一条 "submit" 消息。
这是验证应用程序输入的最佳地方。
实例
<script>function myController($appml) {if ($appml.message == "submit") {validate data here}}</script>
"error" 消息
如果发生错误,AppML 将发送一条 "error" 消息。
这是进行错误处理的地方。
实例
<script>function myController($appml) {if ($appml.message == "submit") {validate data here}}</script>
AppML 属性
这是一些常用 AppML 属性的列表:
| 属性 | 描述 |
|---|---|
| $appml.message | 应用程序的当前状态。 |
| $appml.display.name | 将要显示的数据字段的名称。 |
| $appml.display.value | 将要显示的数据字段的值。 |
| $appml.error.number | 错误号。 |
| $appml.error.description | 错误描述。 |