为显示目的修改绑定文本的最佳方法是什么?
计算字段,自定义绑定等?
例如,你有一个对象“Foo”,属性为“Bar”,是一个字符串,有破折号,你想用破折号替换破折号:
JSFIDDLE:http://jsfiddle.net/yUceG/
JavaScript的:
function MyViewModel() {
this.theFoo = { Bar: "abc-def-xyz" };
}
ko.applyBindings(new MyViewModel());
视图可能如下所示
<div data-bind="with: theFoo">
<span data-bind="text : Bar" />
</div>
或者这个 -
<!--ko with: theFoo -->
<!--ko text: Bar--><!--/ko-->
<!--/ko-->
答案 0 :(得分:1)
一种方法是使用自定义绑定处理程序。
ko.bindingHandlers.lineBreaks = {
init: function (element, valueAccessor, allBindings, data, context) {
$(element).html(value.replace(/-/g, '<br />'));
}
};
如果observable的值可能会改变,那么你可以使用init中的相同代码向绑定处理程序添加更新部分。
ko.bindingHandlers.lineBreaks = {
init: function (element, valueAccessor, allBindings, data, context) {
$(element).html(value.replace(/-/g, '<br />'));
},
update: function (element, valueAccessor, allBindings, data, context) {
$(element).html(value.replace(/-/g, '<br />'));
}
};
现在,当observable的值更新时,显示的值将通过绑定处理程序进行格式化。
您也可以使用extender获得相同的效果。