Я использовал jsTree плагин для рендеринга большого количества дерева node в моем продукте.
Теперь я нахожусь в процессе перехода к Ember, и мне нужно реализовать плагин jsTree в Ember.
Я написал компонент Ember для создания структуры папок с помощью jsTree.
Мой компонент:
<script type="text/x-handlebars" data-template-name="components/temp-tree">
<div id="treediv">Tree Data</div>
</script>
App.TempTreeComponent = Ember.Component.extend({
didInsertElement: function(){
var self = this;
self.$().jstree({
'plugins':["contextmenu", "dnd"],
'core' : {
'data' : [
'Simple root node',
{
'text' : 'Root node 2',
'state' : {
'opened' : true,
'selected' : true
},
'children' : [
{'text' : 'Child 1'},
'Child 2'
]
}
],
'check_callback': true
}
})
.on('rename_node.jstree', function(e, data) {
alert('rename');
})
.on('delete_node.jstree', function(e, data) {
alert('delete');
});
},
actions: {}
});
JSBIN Демо-версия
В моем компоненте для каждого действия, выполняемого в дереве, jsTree запускает событие, соответствующее событию.
Я использовал для прослушивания событий и при необходимости делал необходимые действия.
В основном jsTree обновляет DOM и запускает событие.
Но в Ember мы не будем обновлять DOM, вместо этого нам нужно обновить базовую модель и двухстороннюю привязку данных DOM обновляется Ember.
Здесь я иду против Углубленных конвенций.
Я иду в правильном направлении?
Есть ли другой способ использования jsTree с Ember?
Или есть ли какой-либо jsTree-подобный компонент, доступный в Ember для отображения большого количества узлов дерева со всеми функциями, такими как контекстное меню, перетаскивание, поиск, уникальный плагин, флажок, ленивая загрузка, обновление узлов?