Я работаю над лентой новостей, которая похожа на ленту новостей Facebook. Я реализую его в следующей последовательности:
Когда приложение запущено, получите все, но нажмите только два пункта для показа.
Пользователь может прокрутить вниз, чтобы увидеть больше, и я добавлю больше в список.
Если есть какие-либо новые элементы, пользователю нужно потянуть, чтобы обновить, чтобы добавить новые.
Единственная проблема, с которой я столкнулся сейчас, заключается в том, что каждый раз, когда элемент добавляется, $firebaseArray
автоматически добавляет новый элемент в мой массив, который мне не нужен, чтобы изменения snyc (я хочу запросить один раз, получить список настроек). Мне было интересно, сможет ли кто-нибудь знать, как предотвратить автоматическое обновление?
Посмотрите.once, это позволит вам получить данные только один раз: https://firebase.google.com/docs/reference/js/firebase.database.Query#once
Вместо того, чтобы напрямую привязывать ваш $firebaseArray
к представлению, клонируйте его в свойство области (или контроллера), которое будет привязано к представлению. Факторизуйте этот процесс в функции, которую вы можете вызывать, когда пользователь вытягивает-перезагружает, поэтому восстанавливается $firebaseArray
.
Более подходящим подходом было бы использовать Firebase http api, с угловым сервисом $http
.
Изменение: чтобы клонировать массив в область var, попробуйте следующее:
var allEvents = $firebaseArray(queryOfeverything);
allEvents.$loaded()
.then(function(events){
$scope.allEvents = angular.map(events, function(event) {
return event; // you may want to replace this line - I am not very familiar with firebase.
})
});
$firebaseArray
, который технически является объектом javascript, по ссылке. Вам нужно сопоставить (клонировать массив с простым массивом javascript) эту переменную $ scope. Я обновлю ответ.
once()
действительно может помочь, проблема в том, что$firebaseArray()
абстрагируетon()
от кода OP.