我正在尝试创建一个函数包装器,以禁用我的按钮点击。我希望这个功能是通用的。这是我的禁用功能:
disable = (event, fn) => {
let disabled = false;
return (...args) => {
if (!disabled) {
disabled = true;
const target = event.target || event.srcElement || event.currentTarget;
target.disabled = disabled;
fn(...args);
}
};
}
我可以像这样从我的按钮调用禁用:
<button (click)="disable($event, login)('hello')">Sign in</button>
问题是当调用fn()时,这不再是范围内的了。我知道我想在这里混合一些不同的fn和oop。我可以以某种方式通过这个或使其成为范围的一部分吗?
我希望这是可能的,因为我很乐意使用这种模式!
我可以在不将其作为参数添加的情况下完成吗?
disable = (event, fn) => {
let disabled = false;
return (...args) => {
if (!disabled) {
disabled = true;
const target = event.target || event.srcElement || event.currentTarget;
target.disabled = disabled;
fn(this, ...args);
}
};
}
以上是一个糟糕的解决方案,因为禁用功能不在组件中。
答案 0 :(得分:2)
您可以使用fn.apply(this,...)。