我需要获取绑定到自定义knockout绑定的knockout viewmodel属性的实际名称.考虑以下自定义绑定设置......
HTML
<input type="text" data-bind="myInput: Name" />
Run Code Online (Sandbox Code Playgroud)
使用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);
Run Code Online (Sandbox Code Playgroud)
在自定义绑定处理程序的更新函数的上下文中,如何知道属性Name是要访问的属性?我不是在寻找Name的值(我可以通过valueAccessor获取),而是属性名称本身.
除了解析元素的data-bind
属性或手动设置属性名称作为绑定参数外,还有一些针对您的问题的奇特解决方案.使用预处理:
ko.bindingHandlers.myText.preprocess = function(value, name, addBindingCallback) {
if (typeof(value) !== 'undefined') {
addBindingCallback('myTextBindedTo', "'" + value.replace(/['\\]/g, "\\$&") + "'");
}
return value;
}
Run Code Online (Sandbox Code Playgroud)
ko.bindingHandlers.myText.preprocess
为具有myText
绑定的每个元素调用.value
是data-bind
属性中绑定的值,name
是绑定名称,addBindingCallback
可用于为元素添加另一个绑定.
现在在绑定update
功能的上下文中,myText
您可以myTextBindedTo
使用allBindings
.
UPD:加入检查到的代码,因为value
可以undefined
在结合值的跳过的情况下:
<span data-bind="myText"></span>
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
848 次 |
最近记录: |