gpt4 book ai didi

knockout.js - 获取对 Knockout valueAccessor 属性名称的访问权限

转载 作者:行者123 更新时间:2023-12-04 23:18:49 26 4
gpt4 key购买 nike

我需要获取绑定(bind)到自定义 knockout 绑定(bind)的 knockout View 模型属性的实际名称。考虑以下自定义绑定(bind)设置...

HTML

<input type="text" data-bind="myInput: Name" />

Javascript
ko.bindingHandlers.myInput = {
init: function(element, valueAccessor, allBindingsAccessor, data, context) {
},
update: function(element, valueAccessor, allBindingsAccessor, data, context) {
}
};

var viewModel = {
Name: ko.observable('Knockout')
};

ko.applyBindings(viewModel);

在自定义绑定(bind)处理程序上的更新函数的上下文中,我如何知道属性名称是正在访问的属性?我不是在寻找 Name 的值(我可以通过 valueAccessor 获得),而是在寻找属性名称本身。

最佳答案

除了解析元素的data-bind属性或手动设置属性名称作为绑定(bind)的参数,有一些奇特的解决方案可以解决您的问题。使用预处理:

ko.bindingHandlers.myText.preprocess = function(value, name, addBindingCallback) {
if (typeof(value) !== 'undefined') {
addBindingCallback('myTextBindedTo', "'" + value.replace(/['\\]/g, "\\$&") + "'");
}
return value;
}
ko.bindingHandlers.myText.preprocess为每个元素调用 myText捆绑。 valuedata-bind 中的绑定(bind)值属性, name是绑定(bind)名称, addBindingCallback可用于为元素添加另一个绑定(bind)。

现在在 update 的上下文中 myText的功能绑定(bind)你可以访问 myTextBindedTo使用 allBindings .

Fiddle

Documentation

更新:对代码添加了检查,因为 value可以是 undefined如果跳过绑定(bind)值:
<span data-bind="myText"></span>

关于knockout.js - 获取对 Knockout valueAccessor 属性名称的访问权限,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33046668/

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