Dreamerinnoise
Jktü
спс!
Mikhail
Народ, уже всю голову сломал, помогите какими-нибудь мыслями, пожалуйста.
Есть ng1.5.5, банальный компонент, внутри его контроллера банальная функция:
var $ctrl = this;
function open() {
$ctrl.is_open = true;
}
В шаблоне на $ctrl.is_open завязан ng-show.
Если я вызываю эту функцию из самого компонента (просто хардкодом из контроллера или по ng-click на каком-нибудь элементе) - то все нормально.
А вот если она вызывается коллбеком из местной реализации Event Emitter'a (навроде ee.on( 'my-event', open )), то начинается интересное:
- функция отрабатывает
- присваивает $ctrl.is_open = true;
- нифига не обновляет шаблон
В принципе, логично бы все валить на EventEmitter но:
1) в нем нет ничего замороченного, он просто проходит по массиву подписчиков и вызывает коллбеки
2) функцию то он вызывает нормально
3) в куче аналогичных мест - все работает как часы
$scope.$apply(); и прочую подобную магию применял, дебаггером по коду ходил. Нифига.
Есть у кого-нибудь хоть какие-то мысли, в какую сторону копать?
Eugene [MSK+3]
Народ, уже всю голову сломал, помогите какими-нибудь мыслями, пожалуйста.
Есть ng1.5.5, банальный компонент, внутри его контроллера банальная функция:
var $ctrl = this;
function open() {
$ctrl.is_open = true;
}
В шаблоне на $ctrl.is_open завязан ng-show.
Если я вызываю эту функцию из самого компонента (просто хардкодом из контроллера или по ng-click на каком-нибудь элементе) - то все нормально.
А вот если она вызывается коллбеком из местной реализации Event Emitter'a (навроде ee.on( 'my-event', open )), то начинается интересное:
- функция отрабатывает
- присваивает $ctrl.is_open = true;
- нифига не обновляет шаблон
В принципе, логично бы все валить на EventEmitter но:
1) в нем нет ничего замороченного, он просто проходит по массиву подписчиков и вызывает коллбеки
2) функцию то он вызывает нормально
3) в куче аналогичных мест - все работает как часы
$scope.$apply(); и прочую подобную магию применял, дебаггером по коду ходил. Нифига.
Есть у кого-нибудь хоть какие-то мысли, в какую сторону копать?
transclude true?
Mikhail
нет, по дефолту, false
Lupsik Pupsik
Народ, уже всю голову сломал, помогите какими-нибудь мыслями, пожалуйста.
Есть ng1.5.5, банальный компонент, внутри его контроллера банальная функция:
var $ctrl = this;
function open() {
$ctrl.is_open = true;
}
В шаблоне на $ctrl.is_open завязан ng-show.
Если я вызываю эту функцию из самого компонента (просто хардкодом из контроллера или по ng-click на каком-нибудь элементе) - то все нормально.
А вот если она вызывается коллбеком из местной реализации Event Emitter'a (навроде ee.on( 'my-event', open )), то начинается интересное:
- функция отрабатывает
- присваивает $ctrl.is_open = true;
- нифига не обновляет шаблон
В принципе, логично бы все валить на EventEmitter но:
1) в нем нет ничего замороченного, он просто проходит по массиву подписчиков и вызывает коллбеки
2) функцию то он вызывает нормально
3) в куче аналогичных мест - все работает как часы
$scope.$apply(); и прочую подобную магию применял, дебаггером по коду ходил. Нифига.
Есть у кого-нибудь хоть какие-то мысли, в какую сторону копать?
попробуй в $timeout обернуть
Eugene [MSK+3]
Mikhail
пробовал, не помогло
сейчас в функции достал через angular.element.isolateScope(), сравнил со скоупом контроллера - оказались разные.
Lupsik Pupsik
function open() {
$timeout(function() {
$ctrl.is_open = true;
});
}
Mikhail
Lupsik Pupsik
ну вот это танцы с бубном и ангуларом
Lupsik Pupsik
постоянные
Mikhail
Ну бывает, да. Обычно неделями ничего не вылазит, а потом хрясь, и доставай бубен.
Mikhail
Немного дополню/изменю вопрос.
Почему скоуп может "отцепиться" от элемента?
Во время вызова функции достаю скоуп через angular.element и через $scope.
Когда функция работает нормально - скоупы совпадают.
Когда не работает - они оказываются разными, в скоупе элемента is_open: false, контроллера - как надо, true
Aleksei
ee.on( 'my-event', open ) у тебя внутри контроллера?
Aleksei
у тебя при таком вызове по идее теряется скоуп. попробуй через bind создать обёртку с контекстом $ctrl, и передавать в ee.on результат обёртки
Aleksei
это похоже на то, как если бы использовал внутри таймаута функцию, работающую со скоупом - его там просто нет, поэтому и есть обёртки $timeout и $interval
Mikhail
Ок, спасибо за мысль. Вернусь к компу - попробую.
Aleksei
есть массив айтемов, получаемых с сервера. когда я их получаю, я пихаю их в переменную контроллера, на которой в шаблоне висит ng-repeat. Вопрос: как мне анимировать появление каждого элемента в списке? не всего списка сразу, а именно каждого элемента?
Aleksey
Aleksei
ограничено
Aleksei
я сейчас придумал такую штуку
let items = itemsFromApi;
items.forEach((item, i) => $timeout(() => vm.items.push(item), i*50))
Aleksey
Если это небольшая цифра то можешь через классы сделать "b-item-{$index}, а в классах постепенно увеличивать транзишн
Aleksey
Дилэй
Michail
Aleksei
можно, но попахивает стрельбой из пушки по воробьям
Дима
Aleksei
ну я не настаиваю на элгенатности)
Michail
Ну да Stackoverflow тоже самое предлагает
Дима
Точнее я бы даже сказал, что нужно))
Дима
Модуль добавляет классы объектам во время разных событий, и потребуется просто описать анимации в css для класса наподобие .directive-on-add
Michail
Michail
И санимируются все сразу
Дима
Можно попробовать указать задержку в анимации селектора
.block-add + .block-add
Дима
Или во - там же вообще есть класс и на начало события и на конец, объявляем в css начало анимации на
.block-add-end + .block-add
Дима
Если нормально оформить идею, то всё само будет анимироваться по цепочке)
Evgeny
Ребят, подкиньте годную литературу по ангуляру с примерами желательно
Kool
Народ, уже всю голову сломал, помогите какими-нибудь мыслями, пожалуйста.
Есть ng1.5.5, банальный компонент, внутри его контроллера банальная функция:
var $ctrl = this;
function open() {
$ctrl.is_open = true;
}
В шаблоне на $ctrl.is_open завязан ng-show.
Если я вызываю эту функцию из самого компонента (просто хардкодом из контроллера или по ng-click на каком-нибудь элементе) - то все нормально.
А вот если она вызывается коллбеком из местной реализации Event Emitter'a (навроде ee.on( 'my-event', open )), то начинается интересное:
- функция отрабатывает
- присваивает $ctrl.is_open = true;
- нифига не обновляет шаблон
В принципе, логично бы все валить на EventEmitter но:
1) в нем нет ничего замороченного, он просто проходит по массиву подписчиков и вызывает коллбеки
2) функцию то он вызывает нормально
3) в куче аналогичных мест - все работает как часы
$scope.$apply(); и прочую подобную магию применял, дебаггером по коду ходил. Нифига.
Есть у кого-нибудь хоть какие-то мысли, в какую сторону копать?
scope apply точно, не правильно готовишь
Michail
Народ, уже всю голову сломал, помогите какими-нибудь мыслями, пожалуйста.
Есть ng1.5.5, банальный компонент, внутри его контроллера банальная функция:
var $ctrl = this;
function open() {
$ctrl.is_open = true;
}
В шаблоне на $ctrl.is_open завязан ng-show.
Если я вызываю эту функцию из самого компонента (просто хардкодом из контроллера или по ng-click на каком-нибудь элементе) - то все нормально.
А вот если она вызывается коллбеком из местной реализации Event Emitter'a (навроде ee.on( 'my-event', open )), то начинается интересное:
- функция отрабатывает
- присваивает $ctrl.is_open = true;
- нифига не обновляет шаблон
В принципе, логично бы все валить на EventEmitter но:
1) в нем нет ничего замороченного, он просто проходит по массиву подписчиков и вызывает коллбеки
2) функцию то он вызывает нормально
3) в куче аналогичных мест - все работает как часы
$scope.$apply(); и прочую подобную магию применял, дебаггером по коду ходил. Нифига.
Есть у кого-нибудь хоть какие-то мысли, в какую сторону копать?
Поищи ng-if и прочие директивы с закрытые скоупы в соотв шаблонах
Vlad
подскажите, пожалуйста, странная вещь с ng-if:
1) есть галерея картинок, они загружаются асинхронно с помощью then/Promise
2) пока они грузяться отображается анимация загрузки
пока картинки не загрузяться, отображается div с анимацией, в нем стоит ng-if="loadingChar"
когда они загружены в контролере
function charsCtrl($scope, $api, getChars, $compile) {
$scope.loadingChar = true;
var charP = getChars;
charP.then(function(result) {
$scope.data_chars = result;
$scope.loadingChar = false;
console.log('loadingChar = false');
})
значение это переменной становится false и этот div должен по идеи перестать отображаться, а div с циклом по картинкам наоборот показываться, но этого не происходит, пока или не перезагрузить страницу или не воспользоваться поиском по картинкам, который работает с помощью фильтра в div'е с ng-repeat.
div с циклом:
<div class="file-box" ng-repeat="char in data_chars | filter:searchText" ng-if="!loadingChar">
Vlad
проблема решена! спасибо @rebelok
нужно было добавить в конец функции с then вот это $scope.$digest(), что бы инициировать цикл
Vlad
может у кого-то возникала такая ошибка? она вроде ни на что особ не влияет, но то тут то там появляется и я никак не пойму почему
Vlad
проблема решена.
нужно было в навигации ui-sref-active="active" переименовать в ui-sref-active-eq="active". разница версий ангуляра.
https://github.com/angular-ui/ui-router/issues/1314
Ilya 🃏
Народ, кто с nginx дружит?
Ilya 🃏
Нужно при открытии /guest/aaa/bb/cc (т.е. после /guest/ любое количество разделов) nginx подгружал контент страницы /guest/, но при этом в адресной строке все так-же оставался старый адрес.
Это нужно для angular html5mode
Vlad
всем привет
Vlad
рабят
Vlad
помогите с ивентами emit broadcast
Lupsik Pupsik
Vlad
в директиве не отрабатывает on
Igor
http://stackoverflow.com/a/30001043
Dmitry
Viktor
У меня тоже работает
Dmitry
посмотри в документации как параметры слать
Vlad
делаю через компоненту, у нее есть контролер
Vlad
в ng-init не хочет подписывать на бродкаст
Michail
> @vladb9582
в ng-init не хочет подписывать на бродкаст
не очень понятно. ошибка какая то падает или просто не всплывает событие ?
Vlad
просто не всплывает(
Vlad
спасибо за помощь)
Дима
А теперь спрашивай 😄
ExNihil
Сейчас, сначала традицию воблюду)
ExNihil
соблюду*
ExNihil
#whois
I)Делаю админку, пока не работаю.
II) Начинающий Front-end специалист
III) Могу задавать интересные вопросы и в перспективе отвечать на вопросы других
IV) Интересно предметом изучения
V) Гомель(Беларусь)
VI) Дали ссылку из группы pro.js
ExNihil
У меня есть нужда реализовать маршрутизацию с помощью ui-router, есть форма с валидацией, сама админка, с сайдбаром и ссылками на настройки, лист событий и списком предприятий. Подкажите, как лучше все организовать.
Дима
Ну какой-то слишком общий вопрос) Если ничего не понятно, то просто пробовать и спрашивать по ходу)
Serhii
Органиструй по правильному
Michael
как минимум покажи дизайн
Michael
как это все выглядит
Max
Народ кто пилит или пилил админки на ангуляре, почему много примеров админок, сделаны с левым меню что бы не было переходов назад?
Serhii
Это выглядит как дерево
Serhii
Где все начинается с app
Serhii
тупой вопрос
Serhii
создать переменную для всего апп
Serhii
.constant создает только для модуля к которому ее написал
Igor
сделай глобальную переменную просто в js)
Serhii
выходит что это единствунный способ
Serhii
с вебпаком можно было бы инжектить в файл инита модуля каждего и там приклеить в коснтанту для каждего
Serhii
а без бандлера разве что в глобал