其实我有这样的处理程序
ko.bindingHandlers.setElementVisibility = {
init : function ( element, valueAccessor, allBindingsAccessor, viewModel, bindingContext ) {
var val = valueAccessor ( );
if ( val !== undefined && val !== null && val !== '' ) {
$ ( element ).addClass ( 'show' );
return;
}
$ ( element ).attr ( 'class', 'hidden' );
}
};
然后在View I have
上<span data-bind="text: Name, setElementVisibility: Name">
我会将所有可观察的变量检查应用到我的ViewModel中,因为它现在却没有在View中写入函数。 那可能吗? 我可以扩展可观察对象吗?
答案 0 :(得分:1)
首先,您可以使用css绑定
<span data-bind="text: Name, css: Name() ? 'show' : 'hidden'"></span>
此外,您可以将两个绑定组合为一个:
ko.bindingHandlers.showIfPresent = {
init : function ( element, valueAccessor, allBindingsAccessor, viewModel, bindingContext ) {
var val = valueAccessor();
ko.applyBindingsToNode(element, {text : val, css : val() ? 'show' : 'hidden'})
}
};
视图
<span data-bind="showIfPresent : Name"></span>