2015-03-01 7 views
0

Я использую AngularJS и ngView в своем проекте.AngularJS - ngView и «сохранить в памяти»

ngView отлично работает с ngRoute, но когда я вернусь к ссылке previus, ngView снова загрузит данные (с помощью Ajax).

Возможно ли «хранить в памяти» данные предиума, чтобы не всегда заряжать все?

+0

Почему вы не сохраняете свои данные в Хранилище данных браузера? и извлекать их при перезагрузке ng-view! – NrNazifi

+0

Вы делаете запросы ajax с помощью $ http? –

+0

Вы можете использовать сервис для извлечения ваших данных и кэшировать эти данные внутри службы. – jlowcs

ответ

0

Вы должны хранить свои данные в localStorage (или cookieStorage, если localStorage недоступен) и управлять собственной политикой кэша. Затем проверьте свой контроллер, если данные доступны и не истекли, прежде чем показывать их. Я всегда использую сервис моих собственных, который идет как:

(function() { 

var __service = function() { 

    var __set = function (key, item) { localStorage.setItem(key, JSON.stringify(item)); }; 
    var __get = function (key) { return (localStorage.getItem(key) ? JSON.parse(localStorage.getItem(key)) : null); }; 
    var __clear = function (key) { localStorage.removeItem(key); }; 
    var __clearAll = function() { localStorage.clear(); }; 

    return { 
     Set: __set, 
     Get: __get, 
     Clear: __clear, 
     ClearAll: __clearAll 
    }; 

}; 
angular.module('myApp').service('StorageService', __service); 

}()); 

Тогда в моих контроллеров я ставлю эту услугу, чтобы работать для того, чтобы кэшировать информацию, которую я не хочу, чтобы получить каждый раз я получаю там.

PD: Я знаю, что я должен специализироваться на этом сервисе, чтобы проверить, доступен ли localStorage.

+0

Спасибо. Я должен сделать что-то вроде уведомлений о приложении facebook: когда я нажимаю на уведомление, перейдите на страницу, и когда я вернусь, я вернусь на вкладку уведомлений в той же точке. Возможно, я не могу объяснить, возможно ли это, для этого: http://it.tinypic.com/r/711gsz/8? Ваш код работает для этого? –

+0

Извините, я действительно не понимаю, чего вы пытаетесь достичь. Вы пытаетесь сохранить ViewState своей страницы? помните, что угловые работы по философии SPA (Single Page Application), поэтому обработка обратных действий кнопок несколько сложна. –

+0

Я бы сказал, что когда пользователь вернется, он увидит предыдущую страницу точно так же, как он ушел –