AppML 消息

AppML 消息与操作

当 AppML 即将执行一个操作时,它将应用程序对象($AppML)发送给控制器。

应用程序对象的属性之一是描述应用程序状态的消息($appml.message)。

通过测试此消息,您可以根据操作添加自己的 JavaScript 代码。

实例
  1. <!DOCTYPE html>
  2. <html>
  3. <title>Customers</title>
  4. <link rel="stylesheet" href="/example/appml/style.css">
  5. <script src="https://cankaoshouce.com/js/appml/appml.js"></script>
  6. <body>
  7. <div appml-controller="myController" appml-data="/example/appml/customers.js">
  8. <h2>Customers</h2>
  9. <table>
  10. <tr>
  11. <th>Customer</th>
  12. <th>City</th>
  13. <th>Country</th>
  14. </tr>
  15. <tr appml-repeat="records">
  16. <td>{{CustomerName}}</td>
  17. <td>{{City}}</td>
  18. <td>{{Country}}</td>
  19. </tr>
  20. </table>
  21. </div>
  22. <script>
  23. function myController($appml) {
  24. if ($appml.message == "ready") {
  25. alert("Hello AppML!");
  26. }
  27. }
  28. </script>
  29. </body>
  30. </html>

AppML 消息

这是可以接收的 AppML 消息列表:

消息描述
readyAppML 启动并准备加载数据后发送
loadedAppML 完全加载后发送,准备显示数据
display在 AppML 显示数据项之前发送
doneAppML 完成后发送(显示完成)
submit在 AppML 提交数据之前发送。
error在 AppML 遇到错误后发送

"ready" 消息

当 AppML 应用程序准备加载数据时,它将发送一条 "ready" 消息。

这是为应用程序提供初始数据(起始值)的最佳地方:

实例
  1. <!DOCTYPE html>
  2. <html>
  3. <title>Customers</title>
  4. <link rel="stylesheet" href="/example/appml/style.css">
  5. <script src="https://cankaoshouce.com/js/appml/appml.js"></script>
  6. <body>
  7. <div appml-data="/example/appml/customers.js" appml-controller="myController">
  8. <h2>Customers</h2>
  9. <p>{{today}}</p>
  10. <table>
  11. <tr>
  12. <th>Customer</th>
  13. <th>City</th>
  14. <th>Country</th>
  15. </tr>
  16. <tr appml-repeat="records">
  17. <td>{{CustomerName}}</td>
  18. <td>{{City}}</td>
  19. <td>{{Country}}</td>
  20. </tr>
  21. </table>
  22. <p>Copyright {{copyright}}</p>
  23. </div>
  24. <script>
  25. function myController($appml) {
  26. if ($appml.message == "ready") {
  27. $appml.today = new Date();
  28. $appml.copyright = "cankaoshouce"
  29. }
  30. }
  31. </script>
  32. </body>
  33. </html>

在上面的示例中,当 $appml.message 为 "ready",控制器将向应用程序添加两个新属性(today copyright)。

当应用程序运行时,新属性对应用程序可用。


"loaded" 消息

当 AppML 应用程序加载数据(准备显示)时,它将发送一条 "loaded" 消息。

这是对加载的数据进行更改(如有必要)的最佳地方。

实例
  1. function myController($appml) {
  2. if ($appml.message == "loaded") {
  3. // compute your values here before display
  4. }
  5. }

"display" 消息

每次 AppML 显示数据项时,它都会发送一条 "display" 消息。

这是修改输出的最佳位置:

实例
  1. <!DOCTYPE html>
  2. <html>
  3. <title>Customers</title>
  4. <link rel="stylesheet" href="/example/appml/style.css">
  5. <script src="https://cankaoshouce.com/js/appml/appml.js"></script>
  6. <body>
  7. <div appml-controller="myController" appml-data="/example/appml/customers.js">
  8. <h2>Customers</h2>
  9. <table>
  10. <tr>
  11. <th>Customer</th>
  12. <th>City</th>
  13. <th>Country</th>
  14. </tr>
  15. <tr appml-repeat="records">
  16. <td>{{CustomerName}}</td>
  17. <td>{{City}}</td>
  18. <td>{{Country}}</td>
  19. </tr>
  20. </table>
  21. </div>
  22. <script>
  23. function myController($appml) {
  24. if ($appml.message == "display") {
  25. if ($appml.display.name == "CustomerName") {
  26. $appml.display.value = $appml.display.value.substr(0,15);
  27. }
  28. if ($appml.display.name == "Country") {
  29. $appml.display.value = $appml.display.value.toUpperCase();
  30. }
  31. }
  32. }
  33. </script>
  34. </body>
  35. </html>

在上面的实例中,"CustomerName" 被截断为 15 个字符,"Country" 被转换为大写。


"done" 消息

AppML 应用程序完成数据显示后,将发送一条 "done" 消息。

这是清理或计算应用程序数据(display 之后)的理想地方。

实例
  1. <script>
  2. function myController($appml) {
  3. if ($appml.message == "done") {
  4. calculate data here
  5. }
  6. }
  7. </script>

"submit" 消息

当 AppML 应用程序准备好提交数据时,它将发送一条 "submit" 消息。

这是验证应用程序输入的最佳地方。

实例
  1. <script>
  2. function myController($appml) {
  3. if ($appml.message == "submit") {
  4. validate data here
  5. }
  6. }
  7. </script>

"error" 消息

如果发生错误,AppML 将发送一条 "error" 消息。

这是进行错误处理的地方。

实例
  1. <script>
  2. function myController($appml) {
  3. if ($appml.message == "submit") {
  4. validate data here
  5. }
  6. }
  7. </script>

AppML 属性

这是一些常用 AppML 属性的列表:

属性描述
$appml.message应用程序的当前状态。
$appml.display.name将要显示的数据字段的名称。
$appml.display.value将要显示的数据字段的值。
$appml.error.number错误号。
$appml.error.description错误描述。