应用标准业务代码

时间:2014-03-14 10:44:38

标签: javascript knockout.js

其实我有这样的处理程序

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中写入函数。 那可能吗? 我可以扩展可观察对象吗?

1 个答案:

答案 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>