
Stas
13.04.2018
07:58:26
я изначально неверно подошёл к задаче, но Костя натолкнул на идею, что модалка не должна быть привязана к элементу

Sergey
13.04.2018
07:58:27
Внутри модального окна?

Stas
13.04.2018
07:58:35
и внутри и за модальным
вот этот юайби на сколько я понял в главный контроллер вернёт данные после сохранения модального окна

Google

Stas
13.04.2018
07:59:22
или же нужно в контроллере модального окна вызывать сервис для сохранения
да на самом деле там руками его писать 3 минуты
натянул полотно на весь экран и вставил в центре элемент
при том что у меня 2 разные модалки и у них есть общие компоненты
мне так было проще сделать

Sergey
13.04.2018
08:00:56
Просто кейс какой-то очень странный. Элемент который перекрывает контент обновляет перекрытый контент
Не ну раз получилось, то ладно)

Stas
13.04.2018
08:01:35
это обычный трелло
там есть действие которое закрывает модалку, а есть которое не закрывает
https://trello.com/ зайди поклацай если интересно)
и смотри как удобно получилось, в этих модалках есть дроп меню, я сделал 1 директиву на все ссылки, а через юайби я бы не смог передать такие же данные как из другого, ну точнее смог бы, но нужно было бы шаманить с бубном)

Sergey
13.04.2018
08:06:20
Без кода идею не могу объять
Я бы передавал в модал колбэк, если так сильно надо, который бы по клику стрелял

Google

Sergey
13.04.2018
08:07:18
И обновлял бы данные в родителе и соотв. в модале

Stas
13.04.2018
08:09:24
возможно ты и прав, но почему не сделать свой функционал. Я имею ввиду что у меня всё нормально работает, всё разбито по нужным директивам, единственно что есть 4 лишние глобальные переменные, но нет лишнего контроллера с передачей этих же переменных и колбэками)

Sergey
13.04.2018
08:10:14
Звучит так будто у тебя скоупы не изолированы и controllerAs не используется
Ну или я не так понял термин "глобальные переменные"

Stas
13.04.2018
08:10:52
контроллер эс вм я использую
и в директивы через вм к ним есть доступ
это не правильно?

Sergey
13.04.2018
08:11:43
Да не, я не критикую, я пытаюсь понять что вообще происходит)

Stas
13.04.2018
08:12:07
так я и спрашиваю правильно или нет, возможно я смогу улучшить что-то если я не правильно делаю
у меня есть хоум контроллер, есть несколько директив (избавить от лишнего кода главную вьюху), у них через вм такой же доступ как и в хоум контроллере

Sergey
13.04.2018
08:14:07
Хорошо)

Stas
13.04.2018
08:15:02
правильно / не правильно ответа нет?)

Sergey
13.04.2018
08:16:26
Ну как я тебе без примера кода могу сказать правильный он или нет. Мы так можем весь день пытаться друг друга понять))

Stas
13.04.2018
08:17:05
вот код директивы
angular
.module('trelloClone')
.directive('boardMenu', boardMenu);
function boardMenu() {
return {
restrict: 'EA',
templateUrl: '/common/directives/boardMenu/boardMenu.template.html'
};
}
ну и во вьюхе лежит сам элемент
подгрузка идёт на главной странице, то-есть код этой директивы просто спрятан через ng-show
и при клике нужной кнопки я его открываю и передаю туда нужные данные

Sergey
13.04.2018
08:22:32
А как ты передаёшь, там биндингов нет
Или есть?

Google

Stas
13.04.2018
08:26:07
вроде нет, не очень понял вопрос)
данные передаются через vm.blablabla
и соответственно в директиве (точнее в штмл для директивы) получаются таким же образом

Sergey
13.04.2018
08:29:05
А в чём смысл такой директивы?
Зачем этот код выделять в отдельную сущность?
Он же зависит от внешнего кода, причём неявно

Stas
13.04.2018
08:30:00
просто что бы уменьшить кол-во в главной штмл, так как там уже найти что-то сложно было
плюс некоторые компоненты просто для повторного использования

Sergey
13.04.2018
08:30:42
Но логика работы меню я так понял в глагне контроллере осталась?
Ты эту директиву не можешь переиспользовать

Stas
13.04.2018
08:31:45

Sergey
13.04.2018
08:32:00
Ну в меню наверняка кнопочки есть, они что-то делают

Stas
13.04.2018
08:32:02
у меня есть директива дроп меню, она используется в 2 разных директивах

Sergey
13.04.2018
08:33:01
И эти 2 разных реализуют методы для работы этой директивы

Stas
13.04.2018
08:33:06

Sergey
13.04.2018
08:34:04
Не-не
Обработка вот кнопок на меню

Stas
13.04.2018
08:34:59

Google

Stas
13.04.2018
08:35:36
хотя я наверное не понял вопроса)))

Sergey
13.04.2018
08:38:04
Ну то есть не можешь ты её встроить куда попало, в коде контроллера должны быть методы которые вот этот html дёргает.
А какие она хочет методы никто не знает)

Stas
13.04.2018
08:40:02
так она в основном штмл встроена <board-menu></board-menu> вот так, а я просто либо показываю либо скрываю её
она как бы принадлежит главному контроллеру

Sergey
13.04.2018
08:41:08
Ну вот то место куда она встроена должно в своём коде содержать логику работы с меню
То есть я не понимаю что вообще эта директива инкапсулирует

Stas
13.04.2018
08:42:46
инкапсулирует ничего
я ж уже говорил что она для сокращения кода или повторного использования
вместо добавления в главный штмл кода в 100 строк, я его вынес в отдельную директиву а в главном подключил
и соответственно для повторного использования я так же подключил как и в главной штмл

Sergey
13.04.2018
08:44:49
У тебя вызывающий код должен знать про то что в его шаблоне используется эта директива и называться строго vm и содержать гвоздями прибитые в коде директивы названия методов

Stas
13.04.2018
08:46:08
кажется я ничего не понял)))

Sergey
13.04.2018
08:49:27
Ты ng-include изобрёл

Stas
13.04.2018
08:51:15
Данные из главного контроллера скорее всего не будут доступны (во всяком случае так было с юайби модал). А вот сервис и директивы были доступны (директивы были без данных)


Sergey
13.04.2018
08:54:22
Ну смысла в отделении этого в директиву я не вижу, просто подключать произвольный кусок кода есть уже ng-include. В директивах обычно изолируют какую-то внутреннюю логику. Всё общение с внешним миром через биндинги, сейчас принято компоненты использовать, с one-way биндингами. Ну то есть в параметрах директивы явно указаны входные данные, колбэки, вот это всё.
Представь что тебе надо подключить себе из какой-то библиотеки допустим дейтпикер. И для этого твой код контроллера должен непременно содержать метод onDatesChangedOlolo() и переменную d___a____t___e потому что в html дейтпикера разработчик так всё назвал + ещё 100500 обработчиков внутренней логики.

Stas
13.04.2018
09:00:10
кстати да, мне нужен будет дейт пикер)

Google

Stas
13.04.2018
09:00:20
я смотрел в сторону опять таки юай)

Sergey
13.04.2018
09:01:39
Вот там будет директива в которую ты пропихиваешь модель в разметке, прописываешь обработчики смены даты. А как он внутри там решает показывать например календарь сейчас или нет, например, это его личные проблемы, твой код ничего про это не знает.

Stas
13.04.2018
09:01:53
точно, ты прав, я изобрёл свой нг инклуд)))

Sergey
13.04.2018
09:01:56
Ну то есть наружу выставлено только то что нужно потребителям

Stas
13.04.2018
09:01:57
я просто ничего про него не знал)
соответственно появляется вопрос, стоит ли переделать на нг инклуд или оставить в директивах?)

Sergey
13.04.2018
09:08:09
Да я думаю ты сам придёшь к ответу по ходу дела, подумай, можно ли это меню вообще отделить, какая логика в нём внутренняя, а какая нужна клиентам, ну, тем кто его использует
Может директиву стоит укрупнить до объекта который использует эту менюху и вообще не нужна там отдельная директива именно меню

Stas
13.04.2018
09:11:59
На всякий случай уточню, директива должна использоваться либо с жёстко зашитыми данными либо с изолированными. А если нужно просто разбить немного код что бы лечге было находить что-то где-то, то нужно использовать нг инклуд. Всё верно? И еще уточнение, могу ли я этот нг инклуд использовать в разных нг инклудах?)))

Sergey
13.04.2018
09:19:02
https://github.com/johnpapa/angular-styleguide/issues/444

Stas
13.04.2018
09:27:35
во, так я так же и сделал как он рекомендует))
ладно, спасибо тебе за помощь, буду разбираться, и так уже много времени на меня потратил)

Vladislav
13.04.2018
09:28:20
Здарова мужики
подскажите есть ли в галпе чтонить на подоби http://joxi.ru/Dr8RqdEikG0Pa2

Sergey
13.04.2018
09:28:49

Stas
13.04.2018
09:32:26
)))
ну я из Украины, у нас же тут вк заблокировали, это не мешает людям его юзать)))
так же и у вас с телеграмом будет)

Sergey
13.04.2018
09:57:26

Bohdan
13.04.2018
10:39:32

Stas
13.04.2018
10:40:05