javascript - event.detail 对象可以包含多个值吗?(香草树.js)
问题描述
在玩Vanillatree.js 时,我偶然发现event.details
并想到了以下内容:
如果您希望从树中选择来填充文本区域,您可以使用类似下面的代码,但是如果您想使用类似label
or的东西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
)而不使用其内容?
解决方案
找到了解决方案:
我做了一个错误的假设,整个对象被引用id
,可以调用其他值。
工作代码:
main.addEventListener('vtree-select', function(evt) {
randomtextArea.value = tree.leafs[evt.detail.id].labeling + ' is selected';
});
推荐阅读
- reactjs - 尝试从 reducer 返回数组时应用程序崩溃
- php - Laravel:WhereBetween Date 与请求日期
- c++ - QT 和 OpenCV 问题在不同线程中的 QGraphicsView 上查看 Opencv Mat :: QObject::killTimer: 计时器不能从另一个线程停止
- vba - SAP OLE 自动化 Logon() 方法参数
- django - Django - 根据加载的视图选择选择值
- sql - 是否存在允许列和值之间视觉对称的 INSERT 语法?
- datatables - Xpages 灵活的视图控制
- javascript - 使用 Javascript 和正则表达式的货币计数器
- c# - 在 DataGrid 中使用交互 EventName=PreviewKeyDown 时,如何捕获在 XAML 中按下的键?
- swift - Swift:iTunesLibrary musicFolderLocation 返回错误的位置