Skip to content

Commit

Permalink
Merge pull request #759 from bem/issues/#758@v2
Browse files Browse the repository at this point in the history
i-bem destruct method description Close #758
  • Loading branch information
tadatuta committed Dec 21, 2014
2 parents 1b2721e + 4384d57 commit f827e1c
Showing 1 changed file with 29 additions and 3 deletions.
32 changes: 29 additions & 3 deletions common.docs/i-bem-js/i-bem-js.ru.md
Original file line number Diff line number Diff line change
Expand Up @@ -1728,21 +1728,47 @@ provide(BEMDOM);
<a name="init-ajax"></a>
#### Инициализация и удаление блоков на фрагменте DOM-дерева
#### Инициализация блоков на фрагменте DOM-дерева
Процедура инициализации или уничтожения JS-объектов может быть вызвана
Процедура инициализации JS-объектов может быть вызвана
явно для указанного фрагмента DOM-дерева. Часто такая необходимость
возникает при разработке AJAX-интерфейсов, когда нужно [динамически встроить](#dynamic) в страницу новые экземпляры блоков либо обновить существующие.
В `i-bem.js` следующие функции выполняют динамическую инициализацию блоков:
* Инициализация/уничтожение блоков на указанном фрагменте DOM-дерева
(`init`, `destruct`);
(`init`);
* Добавление/замена фрагмента DOM-дерева с одновременной
инициализацией блоков на обновленном фрагменте (`update`, `replace`,
`append`, `prepend`, `before`, `after`).
<a name="destruct-dom"></a>
#### Удаление блоков на фрагменте DOM-дерева
Как и процедура инициализации блоков, процедура удаления может быть вызвана явно для заданного фрагмента DOM-дерева. Например, при разработке AJAX-интерфейсов, для динамического удаления экземпляров блоков со страницы.
Явный вызов процедуры гарантирует корректное удаление:
* вложенных DOM-узлов;
* блоков, примешанных к другим блокам.
Для явного вызова процедуры удаления служит статичесикий метод `destruct`, реализованный в элементе `dom` блока `i-bem` библиотеки [bem-core](https://github.com/bem/bem-core/blob/v2/common.blocks/i-bem/__dom/i-bem__dom.js#L970).
Метод принимает два аргумента:
* `ctx` `{jQuery}` – корневой DOM-элемент. Удаляется со всем вложенными DOM-узлами.
* `excludeSelf` `Boolean` – не удалять корневой DOM-элемент если значение `true`. По умолчанию `false`.
Например, в блоке [popup_target_anchor](https://github.com/bem/bem-components/blob/v2/common.blocks/popup/_target/popup_target_anchor.js) библиотеки `bem-components` `destruct` используется приватным методом `_onPopupAnchorDestruct` для удаления текущего DOM-элемента при удалении якоря попапа:
```js
_onPopupAnchorDestruct : function() {
BEMDOM.destruct(this.domElem);
}
```
<a name="init-bem"></a>
#### Инициализация и удаление блоков без DOM-представления
Expand Down

0 comments on commit f827e1c

Please sign in to comment.