Knockout.js只在值改变时启用保存

Knockout.js enable save only if value change

本文关键字:启用 保存 改变 js Knockout      更新时间:2023-09-26

我有一个简单的html页面值输入和保存按钮。我想保存将被启用,只有当值被改变(有时是初始化,有时不是)。

我试了几件事都没有成功

HTML

<input type="text"
    placeholder="type here"
    data-bind="value: rate,"/>
<button data-bind="click: save">Save</button>

JS

    var viewmodel = function () {
        this.rate = ko.observable('88').extend(required: true);
    };
    viewmodel.prototype.save = function () {
        alert('save should be possible only if rate is changed);
    };

应该能够通过计算的可观察对象和enable绑定实现这一点。见http://jsfiddle.net/brendonparker/xhLrB/1/

Javascript:

var ctor = function () {
    var self = this;
    self.originalRate = '88';
    self.rate = ko.observable('');
    self.canSave = ko.computed(function(){
        return self.originalRate == self.rate();
    });
};
ctor.prototype.save = function () {
    alert('save should be possible only if rate is changed');
};
ko.applyBindings(new ctor());
HTML:

<input type="text" placeholder="type here" data-bind="value: rate, valueUpdate: 'afterkeydown'"/>
<button data-bind="click: save, enable: canSave">Save</button>