Помимо возможности ссылочности, чтения и записи данных, функционал аргументов шаблона поддерживает возможность мониторинга изменения состояния аргумента. Это реализовывается через методы onArg и onArg[ARG_NAME] объекта враппера. При каждом изменении аргумента шаблона методом
Метод fcf.NClient.Wrapper.onArg вызывается при каждом изменении аргумента шаблона.
Метод имеет следующую сигнатуру:
Аргументы:
-
string a_argName - Имя аргумента. -
mixed a_value - Новое устанавливаемое значение. -
fcf.NClient.Wrapper a_editor - Объект на котором был вызван методsetArg . При применении ссылок a_editor и this могут быть не равны -
bool a_ignoreRedrawing - Флаг запрещающий перерисовку. Устанавливается методомsetArg . -
bool a_innerCall - Флаг внутреннего вызова из самого шаблона, используется для построения логики внутренней обработки. Устанавливается методомsetArg . -
string a_suffix - Путь изменяемого значения в аргументе.
В отличие от метода fcf.NClient.Wrapper.onArg метод fcf.NClient.Wrapper.onArg[ARG_NAME] вызывается при каждом изменении конкретного аргумента шаблона. Полное имя метода формируется из префикса onArg и суффикса ARG_NAME. Суффикс является именем аргумента шаблона начинающимся с большой буквы.
Метод имеет следующую сигнатуру:
Аргументы:
-
mixed a_value - Новое устанавливаемое значение. -
fcf.NClient.Wrapper a_editor - Объект на котором был вызван методsetArg . При применении ссылок a_editor и this могут быть не равны -
bool a_ignoreRedrawing - Флаг запрещающий перерисовку. Устанавливается методомsetArg . -
bool a_innerCall - Флаг внутреннего вызова из самого шаблона, используется для построения логики внутренней обработки. Устанавливается методомsetArg . -
string a_suffix - Путь изменяемого значения в аргументе.
Добавим к нашему приложению смену состояния аргумента "enable" для кнопки "Save". Данный аргумент отвечает за активность кнопки. Если аргументы шаблона не были изменены, состояние "enable" будет false, а при первом редактировании конфигурации оно будет меняться на true.
Это мы будем реализовывать при помощи метода onArg. Возможность отслеживания изменения аргумента шаблона дает более высокую гибкость разработки. Именно для этой задачи данная методика подходит лучше всего. Так так, снимает с программиста задачу отслеживать изменение аргументов или создавать наборы отдельных функций для установки значений.
Приступим. В аргументе _modify мы будем хранить состояние изменения аргументов, данный аргумент будет передан в шаблон кнопки "Save" по ссылке в виде аргумента "enable".
Файл :templates/blocks/moving-containers.tmpl
_reboundCounter: 0
И добавим работу с аргументом _modify в файл враппера
Файл :templates/blocks/moving-containers.wrapper.js
Как видно код функционала занимает всего несколько строчек. Теперь посмотрим на результат.