
Luckydevil13
01.09.2017
14:31:40
а можно как-то написать два ng-repeate (сделать два среза на массивом)
но трэкать их как один

Bohdan
01.09.2017
14:31:54
пиши, но костыль порядочный)
а, не))))

Google

Bohdan
01.09.2017
14:32:14
описывай задачу, если есть желание что бы тебе помогли

Luckydevil13
01.09.2017
14:33:03
<krn-widget ng-repeat="widget in $ctrl.widgets track by widget.widgetId" widget="widget">
</krn-widget>
в widget линейным масив
по факту krn-widget это iframe
и ререндирить их нельзя
мне нужно сделать структуру в которой эти iframe в неком сложном лайауте
для просто ты возмем <div>1</div><div>2,3,4</div>
то есть надо за один проход ng-repeate получить структуру вида
через директивы или ватчеры не зайти - так как при ручном изменении дома - происходит рефлов
$ctrl.widgets в нем могу удалять элементы или менятся местами

Bohdan
01.09.2017
14:37:15
почему iframe используешь?
это первое

Luckydevil13
01.09.2017
14:37:39
сами виджеты это некое легаси

Bohdan
01.09.2017
14:38:05
второе
widget in $ctrl.widgets track by $ctrl.computeHash(widget.widgetId, widget.itemsArray)

Google

Bohdan
01.09.2017
14:39:02
и в контроллере напиши метод computeHash что будет считать hash от айди и элементов массива
ничего страшного в использовании двойного массива нет

Luckydevil13
01.09.2017
14:39:16
id уникальны
computeHash - не нужно
@bednij_bohdan двойной масив это два ng-repeate,
?
или [1],[2,3,4,]?

Bohdan
01.09.2017
14:40:30

Luckydevil13
01.09.2017
14:41:01
два ng-repeate не вариант
допустим удалился виджет
по layout они сдвинулись - в первом ng-repeate полный reflow iframe
в втором ng-repeate все ок

Bohdan
01.09.2017
14:42:28
я, конечно, не уверен, но кажется полностью в любом случае перерисуется
не просто удалится элемент
будет перерисован первый reflow - будет и во втором, если не ошибаюсь

Luckydevil13
01.09.2017
14:43:17
по track by он следит - поэтому просто тусут dom без пересоздания
ошибаетесь

Bohdan
01.09.2017
14:43:52
ну блин, напиши все таки свой метод для подсчета хэшей с track by и не думай костыли

Luckydevil13
01.09.2017
14:43:58
для примере можно удалить 3 элемент
[[1],[2,3,4]] track by ???

Google

Luckydevil13
01.09.2017
14:45:33
но мне надо трэкать by widget.id

Bohdan
01.09.2017
14:45:39
и в контроллере напиши метод computeHash что будет считать hash от айди и элементов массива
ну измени структуру widget
пускай там будет id и еще один элемент - массив и передавай в нижестоящий компонент этот массив

Luckydevil13
01.09.2017
14:46:56
не понял
мне нужен один ng-repeate

Bohdan
01.09.2017
14:48:37
widget in $ctrl.widgets track by $ctrl.computeHash(widget.widgetId, widget.itemsArray)
вот для тебя ж написал пример)
он один и будет

Luckydevil13
01.09.2017
14:51:01
я не понимаю как это должно работать, допустим функция вернет для [1] - A , [2,3,4] -B
допустим я удалю 1
2, займет его место
и будет рефлов та как в хэше нет [2]
[2], [3,4]

Bohdan
01.09.2017
14:53:09
оба элемента перерисуются
потому что хэши будут отличаться

Luckydevil13
01.09.2017
14:53:33
ну там не бы без reflow
там же тяжолые iframe

Bohdan
01.09.2017
14:53:48
пиши свой аналог ng-repeat

Luckydevil13
01.09.2017
14:54:07
а там можно?

Google

Bohdan
01.09.2017
14:54:13
перерисовки в твоем случае не избежать

Luckydevil13
01.09.2017
14:54:13
что бы с track by

Bohdan
01.09.2017
14:54:26
не выйдет, как бы тебе не хотелось
потому что элементы меняются

Luckydevil13
01.09.2017
14:56:20
при линейной структру <krn-widget ng-repeat="widget in $ctrl.widgets track by widget.widgetId" widget="widget">
</krn-widget>
все работает без reflow при удалении или изменений позиции
/me задумавается о своем ng-repeate
с блэкджеом

Bohdan
01.09.2017
15:02:23
так а у тебя сейчас разве не двойной ng-repeat?
в нижестоящем компоненте винжета нету разве вывода repeat?

Luckydevil13
01.09.2017
15:03:53
нет
у меня только <krn-widget ng-repeat="widget in $ctrl.widgets track by widget.widgetId" widget="widget">
</krn-widget>
вся логика постоения iframe внутри krn-widget

Bohdan
01.09.2017
15:05:19
тогда я не пойму задачу у тебя
какие то массивы должны быть, которые не нужны
нифигаськи не понятно

Иван
01.09.2017
19:05:52
А отображать одни данные, а модифицировать другие данные не пробовали? После изменения обновлять вью данные в соответствии и изменениями...
Помоему чем проще, тем дешевле/быстрее/ваш вариант

Sergey
01.09.2017
22:41:28
А кто-нибудь использует rxjs с angularjs? Какие плюсы/минусы/подходы?

Bohdan
01.09.2017
22:48:58

Sergey
01.09.2017
22:49:30
Отлично. Спасибо

Vladislav
03.09.2017
05:31:12
Bohdan Bednij:
getVirtual: function (data) {
return $http({
method: "POST",
url: 'api/fetch/virtual',
data: JSON.stringfly(data)
});
}
widget in $ctrl.widgets track by $ctrl.computeHash(widget.widgetId, widget.itemsArray)

Google

Bohdan
03.09.2017
09:27:49
? ?

Nazar
03.09.2017
11:52:24
всем привет как эта крнструкция называется ?
variable ? true : false

Anton
03.09.2017
11:53:03
Тернарный оператор

Nazar
03.09.2017
11:56:14
благодарю

Anton
03.09.2017
11:56:29
)

Иван
03.09.2017
13:51:57

Nazar
03.09.2017
13:53:16
В поиске не нашли и спрашивают

Иван
03.09.2017
13:58:17
Чтобы потом с умным видом сказать "используй тернарный оператор", а не "ну вот эту хрень с вопросиком там, двоеточием..."? ?

Салават _Awasaky_
03.09.2017
14:30:54
condition ? expr1 : expr2
потому что

Иван
03.09.2017
14:52:13

AP?
03.09.2017
15:07:29