取消isdirty功能的绑定

Knockout binding for isdirty functionality

本文关键字:绑定 功能 isdirty 取消      更新时间:2023-09-26

我必须检查视图是否有任何更改。在这里,我无法将表单与模型绑定。

我的查看页面的代码是:--

<section>
    <ul class="breadcrumb" role="menu">
        <li><i class="fa fa-home"></i> <a href="#">Home</a><span class="divider"></span></li>
        <li class="active"><i class="fa fa-office"></i> <span>Company</span></li>
    </ul>
    <div class="row">
       <div class="col-lg-12" data-bind="event:{change:dirty}">
            <div data-bind="tabs:{widgetData:widgetData}"></div>
        </div>
    </div>
</section>

我写的代码的一部分是:--

var vm = {
        activate: activate,
        canDeactivate: canDeactivate,       
        dirty: function (root) {
            var _initialized;
            var result = ko.computed(function () {
                if (!_initialized) {
                    ko.toJS(root);
                    _initialized = true;
                    return false;
                }
                return true;
            });
            return result;
        },
    };
 function canDeactivate() {
        if (vm.dirty == true) {
            var app = require('durandal/app');
            return app.showMessage('Are you sure you want to leave this page?', 'Navigate', ['Yes', 'No']);
        } else {
            return true;
        }
    }

判断视图是否已更改的方法是使用事件绑定。从您的代码中,我不完全确定您希望检查哪个元素,但您可以很容易地将更改绑定到元素上,以便在元素更改时调用dirty

data-bind="event: {change: dirty}

每当元素值改变时,这将调用dirty函数

ko事件绑定文档位于此处