javascript - 应用标准业务代码

标签 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 上

<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/

相关文章:

json - 无法在 Knockout 中绑定(bind)嵌套的 JSON

mvvm - 编码的UI搜索不允许DataService Ajax请求

dom - 防止 "with"绑定(bind)删除 DOM 元素 (Knockout.js)

javascript - 如何一键运行多个JavaScript函数

javascript - jQuery - 复选框数据发布到 php

javascript - 如何在谷歌地图的屏幕中心设置标记

knockout.js - 显示可观察数组的多个值的串联字符串

knockout.js - ViewModel 更新后 Knockout 不更新 UI

javascript - 远程 javascript-ajax-php 攻击

javascript - 根据某些DIV内容更改CSS