在更改输入框时启用保存按钮

Enable save button on change of input box

我是 breeze 实体管理员,负责检查是否对实体进行了更改。所以我声明 observable

isSomeChanged = ko.observable()

然后我像这样绑定值

 isSomeChanged(datacontext.hasChanges());

HTML 是

 <button data-bind="click: SaveData, enable: isSomeChanged() "> Save</button>

所以现在,如果我在我的页面中更改了某些内容,那么它会启用或禁用按钮。但是,如果我在输入中键入内容,则仅当我退出时才启用按钮,而不是在我键入时立即启用。

如何在输入内容后立即启用保存按钮?

确保在 breeze EntityManager 的 hasChanges 属性 更改时更新您的 isSomeChanged observable:

isSomeChanged = ko.observable();

// update the isSomeChanged observable when the hasChangesChanged event fires.
entityManager.hasChangesChanged.subscribe(
    function(changeArgs) {
        isSomeChanged(changeArgs.hasChanges);
    });

确保您输入的值绑定有一个相应的 valueUpdate 参数设置为 "input"。这将导致对输入的每次更改都会立即写入实体 属性,而不是在输入失去焦点时写入。

<input data-bind="value: entity.FirstName, valueUpdate: 'input'" />

此外,您的按钮的启用绑定可以这样表示(不需要parens):

<button data-bind="click: SaveData, enable: isSomeChanged">Save</button>