gpt4 book ai didi

javascript - knockout JS : Function call twice time

转载 作者:行者123 更新时间:2023-12-01 01:44:43 24 4
gpt4 key购买 nike

我添加了一个文本框,我想在每个应该调用的 keyup 函数上执行此操作。

这是我的 html 代码:

<input type="text" id="description" class="form-control" maxlength="255" data-bind="event:{keyup: doSomething},value: property1,valueUpdate:'afterkeyup'"></input>

这是我的 knockout js 代码:

define(['uiComponent','ko'], function(Component,ko) {
return Component.extend({
defaults:{
property1: ko.observable(),
tracks: {
property1: true
}
},
initialize: function () {
this._super();
},
getText: function () {
return "call the function here..";
},
doSomething : function(){
this.property1.subscribe(function(newValue){
console.log(newValue);
console.log("inside subscribe");
});
}
});
});

例如:当我按T时,它会调用一次。之后,我按 E 然后它会调用两次而不是一次。

我想在每个我想要获取文本框值的keyup上这样做。

如何做到这一点?

最佳答案

这有点像“反模式”,有两种方式绑定(bind)订阅事件。

initialzie 中,创建一次对您的可观察对象的订阅:

initialize: function() {
/* ... */
this.property1.subscribe(function(newValue) { /* ... */ });
}

如果您打算稍后删除该组件,您可以存储订阅并在删除后将其丢弃。 (类似于您目前在每个事件中所做的事情。)

现在,每当 keyup 发生时,knockout 都会从输入中读取 value,将其写入 property1,并调用订阅的函数。

关于javascript - knockout JS : Function call twice time,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52056326/

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