При добавлении зависимости следующим образом:
"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 это просто название атрибута