код пишется для других людей. они залазят туда и читают и пытаются его понять и улучшить.
начиная городить "сокращения" где они совершенно ничего не выигрывают, как ты сам говоришь - ты только запутываешь код.
когда нибудь этим "другим" человеком будешь и ты сам, вернувшись к своему забытому коду.
подумай о будущем )))
Андрей: смысл в том чтобы не дать убежать функции ProductsMore в глобальный контекст а оставить её в "локальном" но в то же время доступном внутри document.ready
тот кто так пишет - красавчик уапшэ
это относится не к "инструментальным" наборам, а к классам приложения.
вполне нормально иметь класс utils который умеет делать запросы через аякс, перебирать циклом массивы и объекты и работать с дом (джиквери/лодаш/%любой-другой-подобный-фреймворк%).
разбиение класса-"супергероя" на отдельные сущности помогает четче разделять обязаности, уменьшать размер контекста при разборе кода класса, увеличивает шанс на реюзабельность классов/отдельных методов, уменьшает "удивление" программиста.
есть хорошая модель "слоёв" приложения - слой сервисов, слой бизнес-логики, слой данных и т.д.
ну так вот, если класс имеет методы которые работают со всеми слоями - значит что то пошло не так.
идеально это когда класс общается только с одним или двумя слоями (сверху-снизу).
исключение составляют классы, построеные так что они должны являться чем то вроде посредников между другими классами, "клеем" связывающим всех прочих в одно приложение. но эти классы сами по себе не умеют ничего, кроме как быть "менеджером". это медиаторы, контроллеры, иногда шины событий, принимающие сигналы от разных частей приложения и отдающие распоряжения что делать дальше.
тот же ангуляр - сама философия разбиения на сервисы, провайдеры и прочие страшные слова - как раз и помогает не создавать таких монстров, которые и в сеть лазить сами умеют, и юи рисовать, и бизнес логика в них лежит, и всё-превсё умеют в одном классе. поэтому концепция модульности очень популярна и построить приложение проще используя уже готовые модули каждый из которых работает в одном слое, а программист лишь описывает их связь в своём коде.
Евгений: return (value*1==value);
не катит?
что то совсем дань моде устроили, лишь бы менее-читаемый синтаксис выбрать и всё тут )
я тоже есть на кодеварс, лол
есть $watch в ангуляре, следит за изменениями.
ставь флаг какой нибудь во время редактирования и запрети обновлять поле из других мест - ведь все точки в которых переменная может быть изменена должны быть на виду (по идее) и в них доступен на чтение флаг. флаг стоит - значит в переменную не пишем. как только фокус пропал с инпута - флаг разрешил изменения "извне"
а, вон что. ну тут просто логически неверно сделано на сервере.
json - это один "объект", т.е. он начался с открывающей скобки и закончился закрывающей. больше после нее ничего нет.
если 2 массива - это уже malformed, т.е. косячный json.
сначала упакуй их в один объект а потом присылай.
выходная точка - это всегда json_encode и делается он в самом конце. также не забывай что надо добавлять header (content-type json) - нагуглишь как там правильнее.
т.е. у тебя
взять массив, упаковать в json
взять другой массив, упаковать в json
склеить получившиеся части и отправить в выходной поток
а должно быть
взять массив, взять другой массив, сделать из них третий массив, упаковать его и отправить в выходной поток
echo json_encode(
array(
'departmentList' =>$department,
'personalList'=>$personal
)
);
определи на JS местоположение главная-или-нет.
потом в обработчике клика просто пишешь
if (!mainPage){
document.location='/'+$(this).attr('href')
}
будет тоже самое
на картинке даже ссылка есть на песочницу jsfiddle - там и есть пример.
$(".fancybox").fancybox({
loop : false,
afterLoad: function(current, previous) {
}
});
в том месте где описывается настройка фансибокса добавляется еще один параметр по названию события. значением параметра должна быть функция - т.к. это обработчик. эта функция и есть колбек который будет вызываться при наступлении события.
иногда плагины передают в колбеки какие то параметры. эти параметры можно брать и что то с ними делать внутри колбека. называть параметры можно как угодно в круглых скобках - именно с такими именами и будешь работать внутри колбека. если они не нужны - можно их не указывать. если их изначально небыло но указываешь сам - они будут "undefined" потому что плагин не знает что туда засунуть.
чтобы отловить открытие надо взять событие и в качестве колбека либо указать название своей функции либо написать
function() {
вызов-какой-то-свой-функции();
}
аналогично на закрытии - обработчик отменяющий визуальное изменение
вот и везде так. в итоге получаем стадо недо-программистов которые только и умеют что "юзать либы из npm" а сами даже на чистом js ни строчки ни напишут. зачем, всё-ж написано за них.
в судный день весь npm кончится, что делать то будем? ))) наверное те кто шарят в ванильке будут что то на подобие богов )))
правильно делает что хочет разобраться, не надо срезать углы на пути к просветлению.
негативный опыт тоже опыт.
мне вот наоборот, например, не нравится идея "поставь это и только это, поменяй всё лишь бы только у тебя хоть что то работало".
тяжело дропнуть ось с которой работаешь уже больше 10 лет - тут много разных причин среди которых самые основные
- "забудьте все чему вас учили в виндовс" - отказаться от багажа опыта с виндой и вообще забыть про нее
- освоение и обучение системе
- отказ от привычного внешнего вида и любимых программ т.к. аналогов для линукса нет
- в случае внештатной ситуации например отваливания сетевой карты - решить проблему становится труднее чем на винде - особенно из за наличия приличного багажа опыта именно по винде - помнится около часа было потрачено как то давно на настройку сетевой карты с лайвсиди убунты без интернета. не спорю - заработало - однако сейчас время дороже. понятно что там всего 2 команды было написать - но для этого надо было прочитать и понять довольно внушительный мануал.
просто для прикола - погугли фотошоп на линукс. в первой же ссылке в сниппете - установим виртуалбокс и винду ))))))))))))
ну а смысл тогда дропать одну ось ради другой если именно из за этого громадного неудобства и появился инструмент типа виртуалбокса (давным давно) и вагранта - в частности ?
-------------
оффтоп конечно, но все же - весь веб - это просто дикая солянка различных стандартов которые друг с другом не совместимы и это бесит. как только соберутся сделать еще один универсальный протокол (ось/приложение/утилиту) - появляется 15 конкурирующих стандартов )))
-------------
так что лично для меня вывод - не стоит прогибаться под изменчивый мир, пусть лучше он прогнется под нас )))
кажется это еще более монструозно чем 2/
образ вырастет на сотни мегабайт, рубимайн сам только 220 весит. ну и на каждый проект отдельный образ делать, в каждом иде устанавливать...
Написано
Войдите на сайт
Чтобы задать вопрос и получить на него квалифицированный ответ.
начиная городить "сокращения" где они совершенно ничего не выигрывают, как ты сам говоришь - ты только запутываешь код.
когда нибудь этим "другим" человеком будешь и ты сам, вернувшись к своему забытому коду.
подумай о будущем )))