Краткое описание: - Создаем сайт социальной сети и сохраняем статусы и пользователей с помощью MongoDB. Таким образом, у вас есть такой статус, например,
{
"status" : "Hello world.",
"profileURL" : "ac271a307",
"comments" : [ ],
"time" : "2013-10-28T22:25:24.278Z",
"active" : true,
"owner" : DBRef("users", "[email protected]"), // MongoDB Reference to the users Collection
"_id" : ObjectId("526ee454da46f33bf8000002")
}
Теперь о угловых делах;
<li ng-repeat="status in statuses | isUserStatus track by status['_id']" ng-show="status.active" class="user-status-bland">
// In here i display the users data and the status itself.
</li>
Примечание: Все это работает отлично
Но вот проблема. Я использую Websockets для автоматического обновления и добавления новых статусов в $ rootScope.statuses.
socket.on('new status', function(status) {
$timeout(function() {
$rootScope.$apply(function() {
// stack the new status at the top of all statuses.
$rootScope.statuses.unshift(status);
});
}, 0);
})
Теперь, если вы делаете console.log() из «статуса» внутри WebSocket функции обратного вызова, я получаю статус и появляется дважды. В некотором смысле, что websocket был отправлен дважды (из которых я не контролирую). Поэтому, когда это помещается внутри «$ rootScope.statuses», когда я получаю ошибку «Ошибка: [ngRepeat: dupes] Дубликаты в ретрансляторе не разрешены. Используйте выражение« track by »для указания уникальных ключей». Это не имеет смысла, потому что я на самом деле, используя $ трек статуса [ '_ ид']
Вы видели этот вопрос еще? http://stackoverflow.com/questions/14748440/angular-js-using-ng-options-to-only-display-unique-values В принципе вы можете скачать плагин, который будет выполнять всю работу по получению уникальных предметов в ваших данных .. – BuddhistBeast
Спасибо @BuddhistBeast. Ваш комментарий привел меня к правильному пути. Кредит для вас. –
Конечно! Я буквально зашел в тупик, когда я впервые попытался сделать то же самое ... Мне потребовалось несколько часов, чтобы наконец понять, что плагин будет решать все! – BuddhistBeast