其实我有一个这样的处理程序
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 上
<span data-bind="text: Name, setElementVisibility: Name">
我会将所有可观察变量应用到我的 ViewModel 中,就像现在一样,但不将函数写入 View 中。 那可能吗? 我可以扩展可观察对象吗?
最佳答案
首先,你可以使用 css改为绑定(bind)
<span data-bind="text: Name, css: Name() ? 'show' : 'hidden'"></span>
此外,您还可以将两个绑定(bind)合并为一个:
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>
关于javascript - 应用标准业务代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22402808/