2015-06-23 4 views
2

Я использую функцию уведомления в своем приложении, используя ионную структуру. как он работает, я делаю запрос get к api rest, который возвращает массив уведомлений. но это кажется слишком большим, потому что я должен каждый раз делать запрос в тот же список. Поэтому я думал о сохранении первого запроса в локальной переменной (используя ngStorage) и просто подтягивать новые элементы в следующих запросах. Является ли это решение возможное? если так что вы можете дать пример того, как идти об этомAngularJS толкает новые элементы в массив по запросу GET

/* Пример 1 первого запроса Json, я буду хранить список в переменной $ LocalStorage */

[{id:1, notification:'notif A'}, 
{id:2, notification:'notif B'}] 

/* Для второго запрос, я только хочу, чтобы подтолкнуть получить «ID: 3» в моем $ LocalStorage как это возможно */

[{id:1, notification:'notif A'}, 
{id:2, notification:'notif B'}, 
{id:3, notification:'notif C'}] 
+0

У вас есть контроль над сервером, который отвечает на ваши запросы? например Можете ли вы передать «...? Last_id = 2 ...» в свой второй запрос и полагаться на то, что сервер будет только возвращать новые уведомления (т. Е. '{Id: 3, ...}')? – tavnab

+0

Если вам нужно сделать запрос и получить все данные в любом случае, нет никакой разницы .... – link64

+0

Я получаю вашу точку, как настроен Rest api .. уведомления /: begin /: end .... ..... начало и конец, являющиеся последним последним из последних @ link64 – teddybear123

ответ

2

было бы лучше, чтобы сервер только передать вам новые уведомления, при условии, вы можете передать некоторое в вашем запросе укажите, какое новое уведомление у вас уже есть (например, ваш запрос может содержать параметр запроса, например last_id=<id>, который ваш сервер использует для фильтрации уведомлений как старых или более старых, чем он; это предполагает, что значение id соотносится с возрастом уведомления; есть другие серверные решения).

Если у вас нет контроля над сервером, самое быстрое, что нужно сделать, это просто заменить весь список новым списком. Я не думаю, что есть что-то, что можно найти, найдя дельты &, добавив их.

Однако, если вам нужны дельты по другой причине (например, вам необходимо выполнить некоторые действия на каждом новом уведомлении на основе его содержания), то один вариант для хранения ваших уведомлений в качестве объекта, а не массив:

// notifications are keyed by ID 
var notifications = {}; 

// load notifications from storage if needed 

// newList is the array of new notifications 
// newNotificationFcn is an optional callback function, which 
// takes the new notification as its only argument 
function updateNotifications(newList, newNotificationFcn) { 
    var doNotify = (typeof newNotificationFcn === 'function'); 
    newList.forEach(function(curr) { 
    if (!notifications.hasOwnProperty(curr.id) { 
     // this is a new notification; do something 
     if (doNotify) { 
     newNotificationFcn(curr); 
     } 
     notifications[curr.id] = curr; 
    } 
    }); 

    // store away notifications as needed 
} 

Однако, это только если вам действительно нужно что-то сделать для этих дельт; если все, что вам нужно сделать, это сохранить свой список в актуальном состоянии, просто замените старый.

Смежные вопросы