Javascript自定义事件更改回调参数
Javascript custom event change callback argument
我想写一个自定义事件,并在其回调函数中打印到控制台obj.name
但我遇到了一个错误,需要将obj名称获取为obj.detail.text.name
如何使用obj.name行代码而不是obj.detail.text.name 解决并打印
目前obj在回调中的结构是:
obj
自定义事件{isTrusted:false}气泡:错误cancelBubble:false可取消:falsecurrentTarget:WindowdefaultPrevented:false细节:对象eventPhase:2isTrusted:falsisTrusted:falsepath:Array[1]返回值:truesrc元素:Windowtarget:WindowtimeStamp:14462115160435类型:"eat:done"proto:CustomEvent
您可以使用自定义属性来增强event object
(将其与lodash合并或自己完成)。下面的例子可能会给你一些启示;
// define the event
var event = new CustomEvent('test');
// add your custom arguments
event.customAttr = 'foo';
//the listener
window.addEventListener('test', function (e) {console.log(e)});
// fire it
window.dispatchEvent(event);
// logs: CustomEvent {isTrusted: false, customAttr: "foo"}
注册自定义事件时,触发时返回的值类型为CustomEvent。
这种混淆在您的命名中也很明显。代替:
MyEventsManager.on('eat:done', function(person){});
你实际上得到了:
MyEventsManager.on('eat:done', function(event){});
如果您想使用CostumEvents,这是唯一的方法(如果不使用CustomEvent对象,就无法使用自定义事件)。
也许你正在寻找更简单的东西,比如回调管理器:
function EventsManager(){
var callbacks = {};
return {
on: function(eventName, callback, context){
if(callbacks[eventName])
callbacks[eventName].push(callback.bind(context));
else
callbacks[eventName] = [callback.bind(context)];
},
trigger: function(eventName, data){
for(var i=0; callbacks[eventName] && i < callbacks[eventName].length; i++)
callbacks[eventName][i](data);
}
}
}
相关文章:
- 要求未定义JS回调参数
- Axios spread()具有未知数量的回调参数
- 节点回调参数无法断言instanceof Error
- each()-将额外的参数传递给回调参数
- AngularJS tokenWrapper-错误的回调参数
- 拉斐尔未运行回调参数
- 使用 jQuery 回调参数通过 AJAX 调用 PHP 函数
- 将函数的执行同步为 node.js 中的回调参数
- 当第一个函数完成没有回调参数时执行第二个函数
- 使用回调参数从函数中获取值
- 如何使用可选的回调参数制作 javascript 函数
- 为什么设置超时's回调参数可以接受参数
- 对 Array.prototype.some 使用额外的回调参数
- 使用Google闭包编译器记录回调参数
- JavaScript Object Literal“;这个“;关键字jQuery回调参数传递
- 在Meteor中运行的回调中未定义回调参数
- 回调参数名称
- 将jQueryajax回调参数定义为现有对象类型
- Reactjs路由器匹配回调参数总是未定义的
- Javascript自定义事件更改回调参数