在knockout中扩展文本绑定
Extend text binding in knockout
是否有可能通过其他选项扩展敲除中的text
结合?例如:
ko.bindingHandlers.text = {
update: function(element, valueAccessor, allBindingsAccessor){
var options = allBindingsAccessor().textOptions || {};
options = _.extend({
'required': false
}, options);
if(options['required']){
// Do some required things
}
}
};
那么一个文本绑定可以写成:
<span data-bind="text: myText, textOptions: { required: true }" />
这是可能的还是需要自定义绑定?
关于包装现有绑定,请参阅这里的第3节。要点是,在init
部分,您调用ko.bindingHandlers.text.init
, update
也类似。在这些电话中,你可以做任何你喜欢的事情。如果你包装的绑定没有init或update,你会得到一个错误,你可以删除那个调用。
嗯,这不是扩展 text
绑定,而是覆盖了。
首先,请注意当前text
绑定非常简单。摘自原文:
ko.bindingHandlers['text'] = {
'init': function() {
// Prevent binding on the dynamically-injected text node (as developers are unlikely to expect that, and it has security implications).
// It should also make things faster, as we no longer have to consider whether the text node might be bindable.
return { 'controlsDescendantBindings': true };
},
'update': function (element, valueAccessor) {
ko.utils.setTextContent(element, valueAccessor());
}
};
实际的功能被卸载到setTextContent
,它处理跨浏览器设置,嗯,文本内容。
如果您想要一个与text
类似的绑定,只是添加了一些特性,那么最简单的方法可能是自己创建一个使用setTextContent
的自定义绑定处理程序。例如:
ko.bindingHandlers['myText'] = {
'init': function() {
return { 'controlsDescendantBindings': true };
},
'update': function (element, valueAccessor) {
var value = ko.utils.unwrapObservable(valueAccessor()), txt = '';
if (value !== null && typeof value == "object") {
txt = value['text'];
if (!!value['required']) { txt += "!!!"; }
} else {
txt = value;
}
ko.utils.setTextContent(element, txt);
}
};
ko.applyBindings({ testProperty: "test text 1234" });
<script src="https://cdnjs.cloudflare.com/ajax/libs/knockout/3.3.0/knockout-min.js"></script>
<span data-bind="myText: { text: testProperty, required: true }"></span>
<br>
<span data-bind="myText: { text: testProperty, required: false }"></span>
<br>
<span data-bind="myText: testProperty"></span>
相关文章:
- 使用敲除绑定多个文本数据
- 在文本框上绑定谷歌地点自动完成,而无需实例化谷歌地图
- 将包含 javascript 的文本绑定到模板中的 innerHTML
- 将 d3 演示中的圆圈和文本替换为包含自定义 HTML 和 ko 绑定的 foreignObject
- 将按钮绑定到几个基于文本框中值的大小而激活的文本框
- 如何使用文本下拉列表中的绑定值来执行计算
- 如何连接文本绑定中使用的可观察量的值
- KnockoutJS,文本与值绑定.为什么文本绑定不绑定到输入字段
- 使用挖空将选项文本绑定到具有对象数组的属性
- 挖空 要在单个标记中显示的文本绑定
- 在单击按钮之前,不会显示已编译的文本绑定
- Kendo MVVM 使用换行符将文本绑定到文本区域
- 数组的文本绑定元素
- 删除文本绑定不能用于输入
- 在knockout中扩展文本绑定
- js文本绑定客户端更改不更新视图模型
- 如何在Angularjs中将文本绑定为DOM对象
- 将文本绑定到子对象的属性
- 删除显示值的文本绑定
- 如何做一个onmouseover文本绑定