Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/css/32.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript knockout.js可以绑定到CSS类吗?_Javascript_Css_Knockout.js_Refactoring - Fatal编程技术网

Javascript knockout.js可以绑定到CSS类吗?

Javascript knockout.js可以绑定到CSS类吗?,javascript,css,knockout.js,refactoring,Javascript,Css,Knockout.js,Refactoring,假设我有一个很大的JS文件,其中包含如下定义: $(document).on('focusin', '.field', function () { // some logic }).on('focusout', '.field', function () { // some logic }); 在选择器引用#元素的地方,我可以很容易地将其重构为一个淘汰视图模型-我只需为元素上的操作添加一个数据绑定属性,并将逻辑移到视图模型中。 但在那些“CSS绑定事件”的连接情况下,我看不出如

假设我有一个很大的JS文件,其中包含如下定义:

$(document).on('focusin', '.field', function () {
    // some logic
}).on('focusout', '.field', function () {
    // some logic
});
在选择器引用
#元素
的地方,我可以很容易地将其重构为一个淘汰视图模型-我只需为元素上的操作添加一个
数据绑定
属性,并将逻辑移到视图模型中。
但在那些“CSS绑定事件”的连接情况下,我看不出如何做到


这里的常见/推荐做法是什么?我应该把它放在我闪亮的淘汰代码旁边吗?

我会创建自定义绑定

请关注下面的示例:

ko.bindingHandlers.hasFocus = {
    init: function(element, valueAccessor) {
        if(element.hasClass('yourClass') {
            var value = valueAccessor();
            value(true);
        }          
    },
    update: function(element, valueAccessor) {
        var value = valueAccessor();
        if (ko.utils.unwrapObservable(value))
            element.attr('class', 'somethingElse');
        else
            element.toggleClass('somethingToToggle');
    }
};

我认为你所拥有的一切都很好,也许你的问题更多的是关于如何组织你的代码。如果是这样的话,我建议你看看这个,看看Rob Conry是如何构建他的应用程序的

本质上,他使用名称空间来封装与敲除相关的代码,并使用相同的模式来封装事件的连接

我要查看的文件是application.js、order_editor.js,以及他在哪里实例化他的东西


您还可以通过使用类似的东西来加载所需的内容,从而变得更加有趣。

您可以使用自定义绑定提供程序来使用淘汰绑定,而无需定义
数据绑定
属性。以下是一些示例和更多信息:


我不是在问焦点或悬停。我没有一个元素可以通过自定义绑定绑定到,所以它没有帮助。没有一个“元素”。。。该类可能有42个元素,在所有元素上添加数据绑定是没有意义的!看看我的编辑。现在它控制绑定依赖于classes.ko以这种方式工作。。。正在添加数据绑定。。。如果你不想重复代码,你可以使用模板。。。