gpt4 book ai didi

knockout.js - 字符串空到空自定义绑定(bind)

转载 作者:行者123 更新时间:2023-12-04 02:45:04 24 4
gpt4 key购买 nike

基于这个答案 Knockout.js: time input format and value restriction ,我正在尝试创建一个自定义绑定(bind),如果值为空字符串,则将 observable 设置为 null,这是不起作用的代码,Ip observable 在模型上始终为 null

ko.bindingHandlers.stringEmptyNull = {
init: function (element, valueAccessor, allBindingsAccessor) {
var underlyingObservable = valueAccessor();
var interceptor = ko.dependentObservable({
read: underlyingObservable,
write: function (value) {
if (value != null && value.trim() == '')
underlyingObservable();
}
});
ko.bindingHandlers.value.init(element, function () { return interceptor }, allBindingsAccessor);
},
update: ko.bindingHandlers.value.update
};

输入:
<input type="text" data-bind="stringEmptyNull: Ip" />

模型:
var Model = function () {
this.Ip = ko.observable()
ko.applyBindings(this, $myForm[0]);
};

instance = new Model();

最佳答案

你的问题在你的 interceptor .

在您的 write您需要设置underlyingObservable的功能至nullvalue是一个空字符串(只调用 underlyingObservable(); 只获取它的值但不将它的值设置为 null )
你还需要通过valueunderlyingObservable在所有其他情况下:

var interceptor = ko.dependentObservable({
read: underlyingObservable,
write: function (value) {
if (value != null && value.trim() == '')
underlyingObservable(null);
else
underlyingObservable(value);
}
});

演示 JSFiddle . (打开浏览器的控制台,然后在文本框中输入一些内容,然后清除文本框)

关于knockout.js - 字符串空到空自定义绑定(bind),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19068526/

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