Используется 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 который был до запроса
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости