我用纯JS编写代码,并且需要在类中为事件侦听器使用可重用的回调。必须满足以下条件:
我尝试将回调定义为方法以及函数表达式,但是每次我解决一个问题时,都会发生另一个问题。我在这里也经历了许多问题,但仍然无法使我的代码正常工作。
class Foo {
constructor() {
functionA()
this.howAndWhereToDefineThisCallback = function(event) {
event.preventDefault();
this.doSomething();
}
}
functionA() {
let el = document.getElementById('element1');
el.addEventListener( 'click', howAndWhereDefineThisCallback );
this.functionB();
}
functionB() {
let el = document.getElementById('element1');
el.removeEventListener( 'click', howAndWhereToDefineThisCallback );
}
doSomething() {
// something meaningful
}
}
如何修改我的代码以按照我刚才描述的方式使用它?
答案 0 :(得分:1)
这里有一个实现:
public class RouteConfig
{
public static void RegisterRoutes(RouteCollection routes) {
routes.Ignore("{resource}.axd/{*pathInfo}");
routes.MapMvcAttributeRoutes();
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "device", action = "view", id = UrlParameter.Optional });
}
}
email, email, phone, phone, phone, name, address
jo@doe.com, re@ko.com, 90192, 2980, 9203, John Doe, 82 High Street
re@doe.com, az@ko.com, 1341, 55, 665, Roe Jan, 11 Low Street
red@doe.com,,, 55, 111, Roe Jan, 11 Low Street
答案 1 :(得分:0)
如果要重用回调函数,只需将其放在类范围之外即可。为了从回调中调用另一个函数,只需将该函数作为回调的参数即可,例如:
var howAndWhereToDefineThisCallback = function(event, anotherCallback) {
event.preventDefault();
if (anotherCallback) anotherCallback();
}
要在您的类方法中使用回调:
el.removeEventListener( 'click', function(event) {
howAndWhereToDefineThisCallback(event, this.doSomething);
});