在knockout.js中创建一个脏标志绑定

 非策不劃小子白 发布于 2023-02-13 11:15

我正在尝试创建一个绑定处理程序,它允许我跟踪绑定中使用的任何值是否已更改:

*

到目前为止我尝试了以下内容:

ko.bindingHandlers.dirty = {
    init: function(element, valueAccessor, allBindingsAccessor, viewModel, bindingContext) {

        var counter = 0;
        var dirtyObservable = valueAccessor();
        var appliedBindings = false;

        var computed = ko.computed(function() {
            if (!appliedBindings) {
                // I was hoping this would subscribe all the used observables
                ko.applyBindingsToDescendants(bindingContext, element);
                appliedBindings = true;
            }
            // make sure subscribe is triggered by returning a new value
            return counter++; 
        });
        computed.subscribe(function() {
            dirtyObservable(true);
        });

        return { controlsDescendantBindings: true };
    }
};

我希望ko.applyBindingsToDescendants能订阅该容器内所有绑定中使用的observable.然而,情况似乎并非如此; 见http://jsfiddle.net/F3uMr/1/.

还有另一种方法来实现这一目标吗?或者为每个容器创建一个ViewModel然后使用脏标志会更好吗?

撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有