Jump to content
  • 0

Документация v5.0


s0rr0w
 Share

Question

Введение

StateController (далее SC) логически разбит на два независимых процесса: процесс установки значения состояния и процесс обхода дерева нод. Состояние может изменяться в процессе работы несколько раз, может вообще не устанавливаться.

Состояния

Состоянием является имя переменной в процессе установки значения состояния, или идентификатор события в процессе обхода дерева нод. Синтаксис состояния должен удовлетворять правилам создания JS-переменной. При установке значения состояния создается свойство объекта states экземпляра SC. При обходе дерева нод, имя состояния используется в качестве имени события.

Описание объекта

Публичные методы

set

Описание

Устанавливает значение переменной состояния.

Параметры вызова

* name

имя переменной состояния

* value

значение переменной состояния

get

Описание

Возвращает значение переменной состояния.

Параметры вызова

* name

имя переменной состояния

launch

Описание

Запускает обход дерева.

Параметры вызова

* stateObject1

* stateObject2

...

* stateObject_n

Где stateObj = { stateName: { c: container[, v: value, l: levels, p: propagation, d: depth, data: data] } }

* stateName

Имя события

* container

Идентификатор ноды, нода или массив нод или идентификаторов

* value

Новое значение состояния

* propagation

Фильтр нод, на которые распространяется функция реагирования обходчика по дереву нод.

По умолчанию значение равно "*", т.е. обходчик обходит все ноды внутри контейнера.

Значение parent означает распространение действия обходчика только на ноду контейнера.

Значение childNodes означает распространение действия обходчика на ноду контейнера и на все дочерние ноды контейнера.

Можно указывать названия нод через запятую, в верхнем регистре, если необходимо отфильтровать только ноды с определенным именем. Например A,SPAN,DIV. При этом распространение действия обходчика будет на ноду контейнера и на все ноды с указанными именами.

* depth

Глубина погружения в дереве нод среди дочерних элементов контейнера. Действует только на параметр распространения childNodes.

* levels

Уровни состояний, написанные через запятую. По умолчанию значение levels равно "all".

* data

Дополнительные данные, которые могут быть переданы вместе с событием.

addHandler

Описание

Регистрирует обработчик в SC.

Параметры вызова

* handlerName

Имя обработчика

* function

Код обработчика

Обработчики SC

Синтаксис

Для присвоения обработчика или нескольких обработчиков любой ноде используется атрибут SC. Значение атрибута будет обрабатываться контроллером состояний.

<node SC="scHandlers" />

Синтаксис scHandlers:

directive 1[|directive 2|...|directive n]

где directive

[level*]js_function_name:state[:option 1:option 2:...:option n]

Каждая директива отделяется друг от друга символом "|". Директива состоит из уровня, имени JS-функции, имени состояния-события, и дополнительных параметров.

Уровень должен быть числовым значением.

Функция-обработчик - имя зарегистрированного обработчика, который будет исполнен при определенных условиях.

Дополнительные параметры не должны содержать символов ":", "*", "|". Желательно использовать синтаксис js-переменных или использовать числа в качестве дополнительных параметров.

Пример использования

<div SC="sc_show_node:show_menu">

<div SC="sc_show_node:show_menu|sc_show_node:show_sub_menu">

<div SC="2*sc_switch_class_name:activate:hiddenBlock">

Обработчики JS

Обработчикам передаются следующие параметры:

* node

ссылка на ноду, которая содержит обработчик

* scData

объект с инициализирующими параметрами

* execOptions

объект с дополнительными параметрами запуска, которые были указаны в параметре data

scData имеет следующую структуру:

* args

массив аргументов, которые передаются обработчику

* func

имя функции-обработчика

* level

уровень запуска

* state

имя состояния, на которое реагирует обработчик

Принцип работы

Состояние логически является переменной и событием одновременно. Имя состояния выступает типом события. Установка значения переменной состояния никак не влияет на обход дерева нод.

Запуск обхода нод производится для какого-либо участка дерева нод документа. Первым проверяется нода контейнера, потом остальные ноды внутри указанного контейнера. Ограничить зону "видимости" обходчика можно с помощью параметра запуска propagation. У каждой ноды ищется атрибут SC, и, если атрибут найден, разбирается значение данного атрибута. Потом выполняются те обработчики, имя состояния которых соответствует имени события, при этом учитываются параметры level и depth.

Link to comment
Share on other sites

0 answers to this question

Recommended Posts

There have been no answers to this question yet

Guest
This topic is now closed to further replies.
 Share

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue. See more about our Guidelines and Privacy Policy