Я использую knockoutjs для обработки различных событий - одним из них является добавление тысячи разделителей в поле ввода цены.
Итак, я подписываю событие изменения на мое поле цены, и это делает некоторую магию, чтобы добавить недостающие разделители, и записывает его обратно в поле цены. Обратная запись в поле цены запускает новое событие изменения, и поэтому мне нужна проверка, чтобы разорвать цикл - что я делаю, спрашивая, действительно ли значение изменилось:
this.listingPriceFormatted.subscribe(function (newValue, model) {
var cleanValue = newValue.toString().replace(/\D/g, '');
$('#Price').val(cleanValue);
var outValue = MySite.Utilities.addThousandSeperator(cleanValue);
if (newValue != outValue) {
me.listingPriceFormatted(outValue);
}
});
Мне не очень нравится запускать одно и то же событие дважды, просто чтобы установить значение один раз. Можно ли как-нибудь записать обратно в поле, не вызывая событие снова, или я все делаю неправильно?