Ответ 1
Ответы на ваши вопросы.
- Я иду в правильном направлении? Вы можете лучше модулировать код.
- Есть ли другой способ использования jsTree с Ember?. Я не знаю, что вы имеете в виду, но вы должны каким-то образом обернуть интерфейс jQuery.
- Есть ли расширение Ember, например jsTree?. Взгляните на ember-cli-jstree или ember-cli-tree.
Подробный ответ
Мы используем Ember в нашем производственном приложении, где нам нужно расширять некоторые плагины jQuery, и я опишу способ, которым мы это сделали.
Существует три этапа жизненного цикла плагина, инициализация с некоторыми параметрами, инициирование событий взаимодействия с пользователем и события манипуляции с обработчиком событий. Цель состоит в том, чтобы создать слой абстракции на этих этапах после соглашений Ember. Абстракция не должна сделать документацию плагина непригодной.
App.PluginComponent = Em.Component.extend({
/***** initialization *****/
op1: null,
//default value
op2: true,
listOfAllOptions: ['op1', 'op2'],
setupOptions: function() {
//setup observers for options in `listOfAllOptions`
}.on('init'),
options: function() {
//get keys from `listOfAllOptions` and values from current object
//and translate them
//to the key value pairs as used to initialize the plugin
}.property(),
/***** event handler setup *****/
pluginEvents: ['show', 'hide', 'change'],
onShow: function() {
//callback for `show` event
},
setupEvents: function() {
//get event names from `pluginEvents`
//and setup callbacks
//we use `'on' + Em.String.capitalize(eventName)`
//as a convention for callback names
}.on('init'),
/***** initialization *****/
onHide: function() {
//change the data
//so that users of this component can add observers
//and computed properties on it
}
});