AngularJs Дубликаты в повторителе не допускаются.Ключ: не определено - PullRequest
0 голосов
/ 18 мая 2018

Я пытался решить эту угловую проблему ng-repeat, но получаю эту ошибку

Дубликаты в повторителе не допускаются.Повторитель: документ в файле project.documentConfig.documents отслеживается по документу. Ключ имени: undefined

Html:

<tr ng-repeat="project in translatorHubConfig.projects">
    <td>{{ project.ProjectName }}</td>
    <td>{{ project.SourceLanguage }}</td>
    <td>{{ project.TargetLanguage }}</td>
    <td>{{ project.Status }}</td>
    <td>
        <div ng-repeat="document in project.documentConfig.documents track by document.Name">
            <label>
                <input type="radio" value="{{document.Name}}" ng-model="project.documentConfig.documents" />
                <a ng-href="{{document.documentUrl}}" style="cursor: pointer;">{{ document.Name }}</a>
            </label>
        </div>
    </td>
    <td></td>
    <td><span class="train-project" ng-click="TrainProject(project.ProjectName, project.documentConfig.documents)" /></td>
</tr>

Если я изменю его для отслеживания по $ index

<td>
    <div ng-repeat="document in project.documentConfig.documents track by $index">
        <label>
            <input type="radio" value="{{document.Name}}" ng-model="project.documentConfig.documents" />
            <a ng-href="{{document.documentUrl}}" style="cursor: pointer;">{{ document.Name }}</a>
        </label>
    </div>
</td>

Каждый раз, когда я нажимаю на переключатель, получим следующее:

Multiple radiobutton is created when click

Ответ:

{projects: Array(3), Success: true, StatusMessage: "", PageNumber: 0, PageSize: 0, …}
PageNumber:0
PageSize:0
StatusMessage:""
Success:true
TotalPages:1
projects:Array(3)
0:{ProjectName: "DemoTranslatorHub", ProjectLabel: null, DisplayName: "DemoTranslatorHub", SourceLanguage: "English", TargetLanguage: "Korean", …}
1:{ProjectName: "DemoTranslatorHub_En_Es", ProjectLabel: null, DisplayName: "DemoTranslatorHub_En_Es", SourceLanguage: "English", TargetLanguage: "Spanish", …}
2:{ProjectName: "DemoTranslatorHub_En_Ja", ProjectLabel: null, DisplayName: "DemoTranslatorHub_En_Ja", SourceLanguage: "English", TargetLanguage: "Japanese", …}
length:3

IЯ не совсем уверен, что я делаю это неправильно.Tqvm в продвинутом.

Ответы [ 2 ]

0 голосов
/ 18 мая 2018

Используйте track by $index в ng-repeat или вы можете использовать ключ, который имеет все уникальные значения.

0 голосов
/ 18 мая 2018

Вы не можете отслеживать повторитель NG с помощью ключа, который будет получать повторяющиеся значения, поэтому правильный способ - использовать $ index, как вы это сделали, или, может быть, если документы не имеют дублированных объектов, нет необходимости отслеживать.Но при чтении ошибки это похоже на то, что некоторые объекты в массиве имеют неопределенный ключ name, поэтому у вас есть пустые переключатели.Я не получил ваш вопрос, что вы ожидали случиться?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...