2016-01-02 2 views
0

Я пытаюсь выполнить итерацию по массиву объектов и отобразить их в своем HTML с помощью Angular. Я сделал это без проблем, используя «track by $ index». Но стандартная ошибка все еще поднят:

Ошибка:

[ngRepeat:dupes] http://errors.angularjs.org/1.3.15/ngRepeat/dupes?p0=(key%2C%20value)%20in%20n&p1=string%3Ab&p2=b 

Но я уже добавил трек $index. Я уверен, что нет никаких проблем с запросом данных, поскольку я смог правильно отобразить их.

<div ng-repeat="n in post.userData.bookmarks track by $index" > 
    <div ng-repeat="(key, value) in n"> 
    <div><a href="/tuts/{{value}}">{{ key }}</a></div> 
    </div> 
</div> 

Предложения?

Dataset:

закладки: [{"1234": "Title1"}, {"5678": "Title2"}]

Что происходит, когда пользователь закладки пост, что они хотят, чтобы читать позже. Я сохраняю идентификатор сообщения и заголовок сообщения для объекта и сохраняю его в массиве. (Я на самом деле просто хотел сохранить его на такой объект: {"1234": "Title1", "5678": "Title2"}, но не смог понять это с помощью mongodb, так как он не позволяет вам сохранять как тип данных объекта.)

Затем я хочу ng-repeat пользовательские закладки в своем профиле. Единственный способ, которым я знаю, как это сделать, - перебрать массив и затем перебрать каждый объект. Конечно, в каждом объекте есть только один элемент. Но вот почему у меня есть второй ng-repeat. Но когда я отслеживаю $index для обоих, как один из приведенных ниже списков ответов, он по-прежнему не дает желаемого поведения.

Что-то, что может вызвать проблемы, состоит в том, что у меня также есть своего рода приборная панель, которую можно просмотреть сбоку при просмотре любого сообщения. И на приборной панели они должны иметь возможность видеть свои закладки. Кроме того, если они находятся в сообщении, которое они имеют в закладке, если они нажимают кнопку закладки (un) на почте, она должна автоматически удалять эту закладку на панели управления закладками.

Но ни одно из предложений не сработало.

+0

предоставить образец данных для его повторения. Как выглядит 'n'? – charlietfl

+0

Есть то, что вы здесь не показываете. базовая угловая выборка с данными примера, которые вы описываете здесь, и одна и та же структура 'ng-repeat' работает без проблем. http://plnkr.co/edit/ikY1msnz8FvJI1OtwMVI?p=preview. Он даже работает, когда «ключ» дублируется. – Claies

ответ

1

Вы забыли еще нг-повторить: <div ng-repeat="(key, value) in n track by $index">

+0

Это не работает. Если я это сделаю, появится большое количество чисел, которые, я считаю, являются номерами индексов. Но ничего не стоит, как должно. Есть 175 номеров, которые публикуются. Когда на самом деле у меня есть только два объекта в массиве. Не 175. В нем говорится, что есть ошибка приведения. – jro

+0

@JonRoby: извините, у меня была ошибка опечатки, это 'by $ index' –

+0

Я добавил редактирование. Это не работает. – jro

0

Я не знаю, почему у писать два раза повторить

<div ng-repeat="n in post.userData.bookmarks track by $index" > 
     <a ng-href="/tuts/{{n.key}}">{{ n.key}}</a> 
    </div> 

ИЛИ

<div ng-repeat="(key,value) in post.userData.bookmarks track by $index" > 
     <a ng-href="/tuts/{{value}}">{{ value}}</a> 
</div> 

ключ все, что вы получаете от объекта ,

+0

Почему вы используете два раза ng-repeat? что находится в объекте post.userData.bookmarks? –