gpt4 book ai didi

javascript - 如何在 Knockout JS 中的 BindingHandler 中获取绑定(bind)表达式

转载 作者:数据小太阳 更新时间:2023-10-29 05:16:11 25 4
gpt4 key购买 nike

假设我有一个跨度

<span data-bind="MyBinding: Name"></span>

我有一个自定义绑定(bind)

ko.bindingHandlers.MyBinding = {
init: function (element, valueAccessor, allBindings, viewModel, context) {
// I want to get the string "Name" here. NOT the value of Name.
},
};

如何在处理程序中获取包含绑定(bind)表达式值的字符串?即我如何获得“名称”而不是“名称的值”。

我还需要表达式,所以传递字符串“Name”是不可行的。

<span data-bind="MyBinding: 'Name'"></span>

最佳答案

实际上,Knockout 确实有一个内置的方法来做到这一点。您确实需要稍微调整一下自定义绑定(bind)(即,它变成一个对象而不是字符串值)。 Knockout 允许您与 initupdate 属性一起指定 preprocess 属性。例如,假设我们有以下 viewModel:

var app = { data: ko.observable('Hello World') };

还有一个简单的绑定(bind),它将传递给它的字符串完全转换为小写,并输出绑定(bind)的名称和值( View 中传递的属性显然是 data):

ko.bindingHandlers.lower = {
update: function(elem, value) {
var obj = ko.unwrap(value());
elem.textContent = 'Name: ' + ko.unwrap(obj.name) +
' - Value: ' + ko.unwrap(obj.data).toLowerCase();
},
preprocess: function(value, bindingName) {
return '{data:' + value + ', name:\'' + bindingName + '\'}';
}
};

它就像将传递给它的 value 属性字符串化并将绑定(bind)的值转换为具有 2 个键(此处为名称和值)的对象一样简单。 Have a look .参见 Binding preprocessing了解更多信息。

关于javascript - 如何在 Knockout JS 中的 BindingHandler 中获取绑定(bind)表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14352691/

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