dependencies, передать в метод обработчик, аргументы.

Очень много оверхеда по коду можно было бы избежать имея возможность передавать аргументы в методы обработчики зависимостей аттрибута.
Например у вас есть 10-ть полей отражающих сущность стоимости "без НДС" и соответвующие им поля "с НДС", вместо того чтобы писать 10-ть методов обработчиков, можно было бы написать один, но передавать в него целевые поля или их имена.
Я пролез по исходникам и нашел занятное поле конфигурационного объекта "argument

                        "SomeFiledwithVAT": {
                                "dependencies": [
                                        {
                                                "columns": ["SomeFiledwithoutVAT"],
                                                "methodName": "VAT_calculate",
                                                "argument": "SomeValue"
                                        }
                                ]
                        }

Таким образом в первый аргумент при вызове метода обработчика попадает "SomeValue"

Далее вопроса два:

1) Как передавать множественные аргументы ? (предусмотрено ли нечто такое ?)
Я естественно проверил "arguments"

                        "SomeFiledwithVAT": {
                                "dependencies": [
                                        {
                                                "columns": ["SomeFiledwithoutVAT"],
                                                "methodName": "VAT_calculate",
                                                "arguments": [null, 1, "SomeText"]
                                        }
                                ]
                        }

но меня ждало фиаско...
тем не менее можно в сам "argument" передавать массив, просто обогатив логику метода сплитом - добиться необходимого.
Хотя кончено это не так эстетично, как если бы можно было
"arguments": [null, 1, "SomeText"]

но тут возникает второй вопрос:

2) Уж больно редко сей аттрибут используется в исходных кодах, есть предположение, что это "костыль" и его могут в любой момент убрать.
Т.е. использовать его при разработке своей логики - авантюризм,
кто ни будь знает это часть нормального долгоживущего функционала или это "костыль" ?

Нравится

4 комментария

в метод-обработчик передается
1) то, что в кофинге в свойстве argument
2) название измененной колонки



эта штука там уже с незапамятных времен и вряд ли куда-то денется

"Андросов Дмитрий" написал:

https://learn.javascript.ru/arguments-pseudoarray


Зачем вы меня отправляете читать про псевдомассив arguments ? :biggrin:
В данном случае arguments, я по аналогии с argument - это атрибут анонимного объекта - элемента массива dependencies
атрибуты объекта вольны называться как хочется, хоть ключевыми словами.

var x = {
	var: "var keyword",
	arguments: "pseudo array",
	function: "function keyword"
}
//любуемся
console.log(x)

Псевдомассив аргументов при вызове метода обработчика собирается следующим образом:
первый аргумент: значение атрибута "argument" установленное в dependencies объекте.
второй аргумент: Имя аттрибута текущей модели (поля) по которому сработала зависимость.

Вот вопрос касался как раз "argument"

"Севостьянов Илья Сергеевич" написал:Вот вопрос касался как раз "argument"

arguments нет, как вы могли уже увидеть по исходникам.
Используйте argument, передавая туда массив или объект, и учите ваш метод работать с этим первым аргументом, разбирая его на нужные вам значения.
Логика зависимостей вряд ли поменяется в ближайшее время.

Показать все комментарии