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 | 错误描述。 |