首页 > 解决方案 > event.detail 对象可以包含多个值吗?(香草树.js)

问题描述

在玩Vanillatree.js 时,我偶然发现event.details并想到了以下内容:

如果您希望从树中选择来填充文本区域,您可以使用类似下面的代码,但是如果您想使用类似labelor的东西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'}的东西写在细节里面,它也总是只传递idevent.details

我找错地方了吗?事件函数能否只使用对象的名称(id)而不使用其内容?

标签: javascripthtmleventstree

解决方案


找到了解决方案:

我做了一个错误的假设,整个对象被引用id,可以调用其他值。

工作代码:

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

推荐阅读