Может ли объект event.detail содержать более одного значения? (Vanillatree.js) - PullRequest
0 голосов
/ 02 мая 2018

Играя с Vanillatree.js Я наткнулся на event.details и подумал о следующем:

Если вы хотите, чтобы выделение из дерева заполняло текстовое поле, вы можете использовать что-то вроде приведенного ниже кода, но что, если вы хотите использовать что-то вроде label или name вместо id?

main.addEventListener('vtree-select', function(evt) {
randomtextArea.value = evt.detail.id + ' is selected';
});

В моем случае каждый элемент дерева выглядит так:

id:{
attribute1:"value1",
parentId:parentId,
name:name,
id:id
}

Я думаю, что ответственная функция в основном файле js:

        _dispatch: function( name, id ) {
        var event;
        try {
            event = new CustomEvent( 'vtree-' + name, {
                bubbles: true,
                cancelable: true,
                detail: {id:id}
            });
        } catch(e) {
            event = document.createEvent( 'CustomEvent' );
            event.initCustomEvent( 'vtree-' + name, true, true, { id: id });
        }
        ( this.getLeaf( id, name, true ) || this.tree )
            .dispatchEvent( event );
        return this;
    },

Даже если такие вещи, как {test:'testtesttest'} написаны внутри деталей, они всегда передают только id в event.details

Я смотрю не в том месте? Может ли функция события использовать только имя объекта (id), а не его содержимое?

1 Ответ

0 голосов
/ 03 мая 2018

нашел решение:

Я сделал неверное предположение, на весь объект ссылаются с id, возможно вызвать другие значения.

рабочий код:

main.addEventListener('vtree-select', function(evt) {
randomtextArea.value = tree.leafs[evt.detail.id].labeling + ' is selected';
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...