При добавлении зависимости следующим образом:
"RoundPropertyPriceWithDiscount": { dependencies: [ { columns: ["PropertyPriceWithDiscount"], methodName: "roundPropertyPriceWithDiscount" } ] }
и обработки методом:
roundPropertyPriceWithDiscount: function() { this.roundDoubleValue("PropertyPriceWithDiscount"); }, roundDoubleValue: function(propertyName) { var value = this.get(propertyName); var rounded = Math.round(value); if (rounded != value) { this.set(propertyName, rounded); } },
происходит зацикливание. Кейс:
вводим в поле 5,56 - запускается метод, записывающий в поле 6,00, далее запускается еще раз (очевидно), проверяет что значение в поле равно его округленному значению (6,00 == 6,00) и значение в поле НЕ ПЕРЕЗАПИСЫВАЕТ. И вот далее идет ТРЕТИЙ запуск, в котором this.get() возвращает старое значение поля - 5,56. Ну и, естественно, это бесконечный цикл. Каким образом работает сей механизм? Если мне не изменяет память - в прошлых версиях такого не было.
7.13.1.769_SalesEnterprise_Softkey_MSSQL_ENU
UPD: Подписка на изменение поля вручную решает вопрос
this.on("change:PropertyPriceWithDiscount", this.roundPropertyPriceWithDiscount, this);
Нравится
Добрый день!
Если я правильно понял Ваш бизнес-кейс, то вы его неправильно реализовали. Если при изменении одного поля нужно взять значение этого поля, округлить его и записать в другое поле, то вам нужно делать this.set("RoundPropertyPriceWithDiscount", value);
Тёскин Дмитрий Валерьевич,
Нет, я все правильно написал. Округление значения в том же самом поле.
RoundPropertyPriceWithDiscount это просто название атрибута