应用标准业务代码

应用标准业务代码

其实我有一个这样的处理程序

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' );
    }
};


然后在视图上我有

<span data-bind="text: Name, setElementVisibility: Name">


我将对所有可观察到的var进行检查,将其保存到ViewModel中,而不是在View中编写函数。
那可能吗?
我可以扩展可观察对象吗?

最佳答案

首先,可以使用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>

关于javascript - 应用标准业务代码,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/22402808/

10-10 22:11