
Sergey
16.05.2018
17:31:34
Ну в смысле как его можно сделать более чем одним способом?

Andrey
16.05.2018
17:31:57

Mo
17.05.2018
06:13:45
всем доброе утречко :)

Google

Stas
17.05.2018
06:17:48
я не в теме о чём вы там говорили, но в стрелочных функциях же this не работает

Andrey
17.05.2018
06:18:29

Sergey
17.05.2018
06:19:54

Stas
17.05.2018
06:20:10
не подсматривай)

Sergey
17.05.2018
06:21:39
Либо вы проверяете на пентиуме 1 либо у вас сверхскоростные глаза 9000

Andrey
17.05.2018
06:22:34
без демки никак

Mo
17.05.2018
06:22:49
демка попозжее :)

Stas
17.05.2018
06:27:52
Я немного не понял как оно удваивает данные, почему бы не очистить массив и потом не записать туда новые данные?


Mo
17.05.2018
06:29:45
А можешь просто вот этот кусок кода показать?
let getPosts = function(category, id, pageNumber, postsPerPage) {
$scope.pageContent = null;
postsBlockService.getPosts(category, id, pageNumber, postsPerPage).then(function (response) {
if (Array.isArray(response.data.data)) {
// if response is an array (posts list)
response.data.data.forEach(elem => {
elem.descr = elem.descr.slice(0, 150) + '...';
});
$scope.pagination.totalPostsCount = response.data.totalPostsCount;
$scope.pagination.postsPerPage = response.data.postsPerPage;
$scope.updatePagination();
} else if (response.data.data && typeof response.data.data === 'object' && response.data.data.constructor === Object) {
// if response is an object (single post)
response.data.data.topPosts.forEach(elem => {
elem.descr = elem.descr.slice(0, 100) + '...';
});
response.data.data.similiarPosts.forEach(elem => {
elem.descr = elem.descr.slice(0, 200) + '...';
});
}
$timeout(() => {$scope.pageContent = response.data.data}, 0)
// $scope.pageContent = response.data.data;
$window.scrollTo(0, 0);
}, handleError);
}

Google

Sergey
17.05.2018
06:32:18


Stas
17.05.2018
06:34:12
let getPosts = function(category, id, pageNumber, postsPerPage) {
$scope.pageContent = null;
postsBlockService.getPosts(category, id, pageNumber, postsPerPage).then(function (response) {
if (Array.isArray(response.data.data)) {
// if response is an array (posts list)
response.data.data.forEach(elem => {
elem.descr = elem.descr.slice(0, 150) + '...';
});
$scope.pagination.totalPostsCount = response.data.totalPostsCount;
$scope.pagination.postsPerPage = response.data.postsPerPage;
$scope.updatePagination();
} else if (response.data.data && typeof response.data.data === 'object' && response.data.data.constructor === Object) {
// if response is an object (single post)
response.data.data.topPosts.forEach(elem => {
elem.descr = elem.descr.slice(0, 100) + '...';
});
response.data.data.similiarPosts.forEach(elem => {
elem.descr = elem.descr.slice(0, 200) + '...';
});
}
$timeout(() => {$scope.pageContent = response.data.data}, 0)
// $scope.pageContent = response.data.data;
$window.scrollTo(0, 0);
}, handleError);
}
массив это pageContent?


Mo
17.05.2018
06:34:28

Stas
17.05.2018
06:35:03
да
Ты его очищаешь перед запросом в базу, из за этого глазу и видно, может поискать другой вариант?
попробуй очистить прям перед новым заполнением

Mo
17.05.2018
06:35:56

Sergey
17.05.2018
06:36:00
И соотв не перерисовывает/ведёт себя странно
Кстати похоже на то что вы рассказываете
Попробуйте трекать по ид либо вовсе без

Mo
17.05.2018
06:42:58
видимо, без песочницы не обойтись
но пока нету времени, чуть позже сделаю
попробуй очистить прям перед новым заполнением
пробовала, эта проблема решается, но возвращается предыдущая - при изменении стейта на posts (список постов) в списке на миг появляются пустые поля. Собственно, эту проблему решила обнулением pageContent прямо перед запросом на бэк, но тогда вылазит вопрос с дублированием. Замкнутый круг и мракобесие)
Если обнулять и перед запросом и перед заполнением (все уже пробовала) - элементы списка снова дублируются.

Andrey
17.05.2018
06:53:12

Vladislav
17.05.2018
06:55:34
Ребят есть ресурс http://joxi.ru/n2Ygwe5UojyOMr
вот я его вызываю http://joxi.ru/MAjE63lC4voKl2
почему в первом случае добавляет слеш в конце http://joxi.ru/EA4LlQvtwDMNJA

Sergey
17.05.2018
06:58:28
Слеш в конце чего, урл?

Andrey
17.05.2018
06:59:16

Vladislav
17.05.2018
06:59:28
max_ts/

Google

Vladislav
17.05.2018
06:59:37
а дальше параметры
стрелочку же нарисовал там

Stas
17.05.2018
07:01:43

Mo
17.05.2018
07:01:43

Sergey
17.05.2018
07:02:54
Не использовать трекбай

Mo
17.05.2018
07:04:27

Andrey
17.05.2018
07:04:35

Mo
17.05.2018
07:04:57

Sergey
17.05.2018
07:04:58
$id это что?

Andrey
17.05.2018
07:05:19
trach by item.id
ил как там у вас
другие причины почему дублируются данные это уже логика работы в коде, хотя ее там немного

Mo
17.05.2018
07:06:31
как я поняла, это получаются одинаковые элементы для ангуляра, потому он их не затирает перед записью?

Sergey
17.05.2018
07:07:37

Mo
17.05.2018
07:08:08

Sergey
17.05.2018
07:08:26
Ну вот $id это ваш сервис какой-то который ид выгребает?

Andrey
17.05.2018
07:08:35
то что я написал, дублируется сам dom по индексу который в кеше
но данный у меня другие приходили, так как другую страницу загружал
у вас что-то не то вообще

Mo
17.05.2018
07:08:47

Andrey
17.05.2018
07:09:01

Google

Sergey
17.05.2018
07:10:03
И правда)

Andrey
17.05.2018
07:10:44
это в какой версии ангуляра такая дока ?

Mo
17.05.2018
07:10:57
https://docs.angularjs.org/api/ng/directive/ngRepeat
Default tracking: $id(): item in items is equivalent to item in items track by $id(item). This implies that the DOM elements will be associated by item identity in the collection.

Sergey
17.05.2018
07:11:28
@Nano_Mo вы можете два файла сделать? Ну чтобы это было похоже на реальный кейс. Постоянно один и тот же жсон возвращать бессмысленно

Andrey
17.05.2018
07:11:32
у вас какая версия ?ангуляра

Mo
17.05.2018
07:11:49
1.4

Andrey
17.05.2018
07:12:22
все правильно $id берет ваш текущий элемент и использует его в качестве индекса
еще нужно что бы вы показали свой json файл

Sergey
17.05.2018
07:15:40
Так тут от реализации $$hashKey зависит
Если трекинг дефолтный
@Nano_Mo ну или попробуйте добавлять в каждый элемент uuid при получении и трекать по нему
Так оно будет думать что элементы разные

Mo
17.05.2018
07:18:25
элементы сделала разными, разнесла по разным папочкам в дополнение
первый элемент меняется на новый, справа от него "мигает" и исчезает старый элемент
пробовала без трека вообще и с треком по title-у (точно разному)

Sergey
17.05.2018
07:19:33
Вы хотя бы видео можете записать?
Скринкаст - как происходит, как ожидается, что не так
Потому что я например уже запутался и ничего не понимаю

Google

Mo
17.05.2018
07:21:50
видео это не мое. Потом попробую вынести код в песочницу

Sergey
17.05.2018
07:23:29
https://embed.plnkr.co/mQUSVxj3PWtZWL0tYD2z/
Ну вот, песочница с пагинацией
Правда там ng 1.5

Stas
17.05.2018
07:25:41
и там нет запросов, там сразу готовый массив

Sergey
17.05.2018
07:26:52
Это меняет ничего
Версия ангулара - мб, 1.4 старый
max_ts/
А почему они у вас в params не объявлены? Вообще $resource на мой взгляд - гадость. Я по крайней мере не осилил. А с тайпингами вообще ужас-ужас

Vladislav
17.05.2018
07:41:56
@yarrrrrrrr весть проект на них сделан, приходится на них) проблема в серваке , он первый рапрос как то магически обрабатывает, а если там в роуте поставить слеш в конце max_ts/?params то сразу становится все ок ) бред короче

Sergey
17.05.2018
07:43:02
То есть вам нужен там слеш?
У ресурса есть такая хрень ещё
app.config(function($resourceProvider) {
$resourceProvider.defaults.stripTrailingSlashes = false;
});
Но это по идее и на уровне индивидуального ресурса перегрузить можно

Aibek
17.05.2018
08:18:51
всем привет ребят, не пинайте сильно, не работал никогда с ангуляр
есть массив, прохожу ng-repeat
и в зависимости от данных нужно чекнуть чекбокс
ng-checked='item.checked ==1' - почему то не чекает, а чекает при ng-model='item.checked'(что странно для меня)
и вот на чекбоксе висит обработчик для change
но я хотел бы И при проходе зафайрить ивент change, чтобы обработчик сработал, как это и сделать?)

Sergey
17.05.2018
08:21:00
А ng-model + ng-change?
при проходе это как - hover?

Aibek
17.05.2018
08:25:47
то есть при рендере массива, проставляю чекед для чекбокса
и как отловить это событие, если при ng-checked не проставляется checked,а только при ng-model

Sergey
17.05.2018
08:29:52
Вам надо при первой отрисовке запускать обработчик изменения? Создайте компонент с чекбоксом и там в $onChanges получайте все изменения модели, в т.ч. первоначальное
Ну или попробуйте ng-model, ng-changed и ng-init="item.checked"

Aibek
17.05.2018
08:36:00
в changed можно выражение передать?

Sergey
17.05.2018
08:36:28
Да