Jan 09, 2022 20:22
Для тех, кто не в курсе: так программисты называют витиеватые способы, которыми программа может сделать себе больно.
Итак, был у меня замечательный код, просто конфетка: после выбора фильтра в верхнем меню он проходил по всем имеющимся объектам и помечал не прошедшие фильтрацию ноликом, а прошедшие - единичкой. После этого на сцену выходил его высочество AngularJS который показывал или прятал объект, в зависимости от того самого статуса.
Но начальство резонно заметило, что прятать от пользователя объекты, пусть даже отфильтрованные, некрасиво. А красиво было бы объект показать, но в стиле "disabled" - сереньким, с выключенными действиями по клику мышки. Сказано - сделано: пошаманил с CSS, переставил вместо ng-hide вычисляемый класс ng-class зависимый от всё того же битового поля 0/1.
И оно тоже прекрасно заработало, и увидел я что это хорошо, и сказал "да быть интеграции". Дело в том, что помимо этих визуальных чудес, я накрутил сложнючий код на PHP, который читал инфу из JSON-файла, объединял эту инфу с реальными объектами из базы данных, остатки разбивал на два подмножества (привет вычислительная математика)...
Поэтому, чтобы немного облегчить мне жизнь, вопросами фронт-энда занялся совсем другой человек. Он просто заметил, что в моём жаба-скрипте есть что-то связанное с условием показывать/спрятать, и логично рассудив, что именно этого ему почему-то не хватает, понаставил в собственном цикле единички во все объекты.
И вот, собрана бета-версия, начинаю тестировать и получаю полный игнор: что бы я ни фильтровал, ни черта не меняется. Начинаю дебажить жаба-скрипт - в нужные места программа заходит, нолики честно прописывает. Натравливаю на данные JSON.stringify и печатаю результат на консоль - та же картина, все нолики на месте. Но проклятый Angular продолжает игнорировать мои нолики! Уж не знаю, каким чудом я догадался заглянуть на несколько строчек ниже своего дампа: kurwa, вся моя фильтрация аккуратно идёт под нож. И ведь не упрекнёшь человека в том, что он мне данные попортил - надо было самому не лениться и переменную переименовать во что-то более self-explanatory.
дыбр,
программирование,
работа