Как в CanJs правильно перебирать DefineList?

271
21 февраля 2018, 12:19

Используется CanJS v3.10

Делаю модуль для получения оповещений пользователя В модели UserInfo получаю данные от модели Notification. для получения данных используется can.connect. При инициализации получаю данные затем обновляю их через определенный интервал. Данные он возвращает типа DefineList при чем при выводе в логи они обновленные, но вот когда пытаюсь пройтись по нему forEach он использует старую версию данных.

Модель Notification:

var Notification = can.DefineMap.extend({
    id: "integer",
    title: "string",
    text: "string",
    icon: "string",
    date: "string",
    looked: "string",
});
Notification.List = can.DefineList.extend({
       "#": Notification,
});

Notification.connection = can.connect.superMap({
       url: {
           resource: '/notifications'
       },
       Map: Notification,
       List: Notification.List,
       name: 'notification'
});

Получение данных: вызывается в UserInfo через интервал

Notification.getList({}).then(bind(function(value){
    this.checkUnviewed(value); // Проверка новых сообщений
    this.notifications = value;
}, this));

Здесь пробегаемся по списку смотрим есть ли новое оповещение

/**
 *  Проверяет есть ли новое сообщение
 *  @param array
 */
checkUnviewed: function(notifications){
    this.unviewed = notifications.some(function(item){
        return !item.looked;
    });
},

В этой функции при console.log(notifications); выводятся данные с сервер которые пришли.
Но, когда перебираем его, он использует тот Notifications который был до запроса

READ ALSO
Angular 2 - Дождаться ответа от сервера

Angular 2 - Дождаться ответа от сервера

Вопрос такой - как сделать, чтобы при выполнении такой функции

219
Редактирование jTable

Редактирование jTable

Добрый деньу меня появилась задача отредактировать элементы внутри класса

218
Синхронное добавление точек на карту

Синхронное добавление точек на карту

Имеется массив данных о клиентах, которых необходимо занести на карту в виде точекУ каждого клиента обязательно есть адрес, но может быть...

194
React.js + D3.js - Узлы перекрывают друг друга

React.js + D3.js - Узлы перекрывают друг друга

У меня есть дерево для отображения данныхЗдесь можно увидеть TREE

230