Я использую нокаут-почтовый ящик, чтобы отметить грязный флаг. Код выглядит так:ПубликацияНе стрелять, когда я удаляю содержимое ввода
var ProfileModel = function() {
this.nickName = ko.observable("name1").publishOn("dirty", true);
this.emailAddress = ko.observable("email1").publishOn("dirty", true);
};
ko.postbox.subscribe("dirty", function(newValue) {
// enable Save button
}, this);
nickName и адрес электронной почты связаны с полями ввода.
<div id="profile">
<input data-bind="value: nickName" /> </label>
<input data-bind="value: emailAddress" /></label>
</div>
Шаги по воспроизведению проблемы:
- Пользователь переходит в поле ввода никнейм и удалить содержимое.
dirty
и кнопка «Сохранить» включена. - Пользователь нажимает кнопку «Сохранить». Изменение сохраняется, и кнопка «Сохранить» становится недоступной.
- Пользователь отправляется по электронной почте и удаляет контент.
dirty
НЕ РЕАЛЬНО. Пользователь не может сохранить изменения. - Пользователь вводит что-то в адрес электронной почтыAddress или nickName.
dirty
и кнопка «Сохранить» включена.
Вы можете посмотреть jsfiddle, чтобы увидеть его в действии. В примере jsfiddle нет кнопки «Сохранить», но просто попробуйте удалить содержимое nickName и затем отправить адрес электронной почты. Вы увидите, что удаление emailAddress не вызывает событие dirty
.
Известна ли эта ошибка в нокаут-почтовом ящике? Есть ли лучший способ проверить грязность в нокауте?
Да, я вижу проблему - я подозреваю, что это ошибка в почтовом ящике. Я не использую postbox таким образом, поэтому не могу помочь. Для редактирования/сохранения/отмены взгляните на https://github.com/stevegreatrex/ko.plus - хорошую возможность редактирования/отмены/фиксации. – Quango