Контроллеры AppML


Назначение контроллера AppML — позволить вам управлять своим приложением.


Что может контроллер?

  • Установить исходные данные
  • Изменить данные приложения
  • Обработка ввода и вывода
  • Проверить данные
  • Суммировать данные
  • Обработка ошибок
  • Запуск и остановка приложений
  • И многое другое

Без контроллера

По умолчанию приложения AppML работают без контроллера:

Пример

<table appml-data="customers.js">
<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>

С контроллером

С помощью контроллера AppML вы можете управлять своим приложением с помощью JavaScript .

Контроллер — это функция JavaScript, предоставленная вами .

Атрибут appml-controller используется для ссылки на функцию контроллера.

Пример

<h1>Customers</h1>
<table appml-data="customers.js" appml-controller="myController">
  <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>

<script>
function myController($appml) {
    if ($appml.message == "display") {
        if ($appml.display.name == "CustomerName") {
            $appml.display.value = $appml.display.value.toUpperCase();
        }
    }
}
</script>

Контроллер (myController) в приведенном выше примере изменяет значение «CustomerName» на верхний регистр перед его отображением.

Если у вас есть контроллер, AppML будет отправлять объект приложения ($appml) на контроллер для каждого важного действия.

Одним из свойств приложения является сообщение ($appml.message), описывающее состояние приложения.

Message Description
ready Sent after AppML is initiated, and ready to load data.
loaded Sent after AppML is fully loaded, ready to display data.
display Sent before AppML displays a data item.
done Sent after AppML is done (finished displaying).
submit Sent before AppML submits data.
error Sent after AppML has encountered an error.

Сообщения объясняются в следующей главе.