gpt4 book ai didi

javascript - 在 knockout.js 中动态更改点击绑定(bind)的处理程序

转载 作者:行者123 更新时间:2023-11-30 12:51:24 25 4
gpt4 key购买 nike

我得到了以下绑定(bind),就像一个魅力:

<button class="flatButton buttonPin" data-bind="click:EnterPinMode">Add pin</button>

在我的 View 模型中,我这样定义处理程序:

self.EnterPinMode = function(data,event)
{
//Doing several things here
//....
}

现在,假设我想在第一次单击按钮后更改它的行为...我该怎么做?我已经很容易地更改了按钮文本:

self.EnterPinMode = function(data,event)
{
//Doing several things here
//....
var curButton = $(event.target);
curButton.text("Cancel");
}

但是如何改变按钮行为呢?如果我通过 jQuery 设置了这个处理程序,那将不是问题,但是有没有一种方法可以“替换”该控件上的点击绑定(bind),以便现在它将调用 ExitPinMode 处理程序,例如.考虑到 knockout 仅适用于声明性绑定(bind)(至少没有插件......),我对这是否可能存在一些疑问,但我认为这值得一问。

请注意,我实际上需要某种 3 种切换方式,为了示例,我只是将其简化为“正常”切换。

最佳答案

我认为使用 View 模型私有(private)的 hasBeenClicked 标志很好,而且可能是最好的解决方案。

如果你真的想换出处理程序,那应该很容易,但是,像这样:

function enterPinMode() {
//Doing several things here
//....
var curButton = $(event.target);
curButton.text("Cancel");

//set click handler to a step 2 function
self.pinAction = exitPinMode;
}
function exitPinMode() {
//....
}

self.pinAction = enterPinMode;

关于javascript - 在 knockout.js 中动态更改点击绑定(bind)的处理程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20844043/

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