gpt4 book ai didi

javascript - 事件自行触发

转载 作者:行者123 更新时间:2023-11-28 11:22:35 25 4
gpt4 key购买 nike

我不知道为什么函数只有在按下按钮时才运行,它自己运行。

这是我的按钮声明:

var oButton = new sap.m.Button({
id: "buttonId",
text: "Yes",
press: this.fnB()
});

我的 Controller 如下所示:

sap.ui.controller("<controller-name>", {

fnA: function(){<button_declaration_here>},

fnB: function(){console.log("Hello from fnB!");}

});

当我运行应用程序时,我得到:

Hello from fnB!

Uncaught TypeError: Cannot read property '0' of undefined

尚未按下任何按钮,为什么我会收到问候消息?

如果重要的话我会使用 SAP WEB IDE...

最佳答案

这个:

press: this.fnB()

调用 this.fnB() 并使用其返回值来初始化 press 属性,与 x = foo 完全相同() 调用 foo 并将其返回值分配给 x

你可能想要

press: this.fnB

press: this.fnB.bind(this)

这样您就可以将函数的引用分配给press,而不是调用它并使用它的返回值。

第二个例子可能需要一些解释:如果我们只使用

press: this.fnB

这会将函数分配给 press,但当它运行时,调用 fnB 期间的 this 不会是与上面代码中的 this 相同,因为在 JavaScript 中,函数内的 this 的值通常由函数的调用方式决定。

使用Function#bind:

press: this.fnB.bind(this)

...创建一个函数,在调用时,将使用我们为bind提供的this值来调用原始函数。

关于javascript - 事件自行触发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30436469/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com