0
<ui-select id="facility" multiple ng-model="IdRequest.formData.facilityRequestedArray"  validation="required" ng-disabled="IdRequest.formData.applicantReadOnly" class="drop-down">
  <ui-select-match allow-clear="true" placeholder="{{'select'|translate}}">
    {{$item.displayText}}
  </ui-select-match>
  <ui-select-choices repeat="facility.id as facility in IdRequest.facilityList">
    {{facility.displayText}}
  </ui-select-choices>
</ui-select>

エラー: [ngRepeat:dupes] リピーターでの重複は許可されていません。'track by' 式を使用して一意のキーを指定します。リピーター: $select.selected の $item、重複キー: 番号:1、重複値: 1

4

2 に答える 2

1

ui-select (バージョン 2.1.3) でも同じ問題が発生しています。選択した項目は ajax 経由で読み込まれ、正しい選択が表示されますが、クリックして別のオプションを選択すると、既に選択されているオプションが可能なオプション内にあり、再度選択すると重複エラーが発生します。

ソースを掘り下げるのではなく、スクリプトからディレクティブを強制的に更新することにしました。

これは修正です: HTML

<ui-select multiple="true" ng-model="x.itemsSelected" theme="bootstrap">
    <ui-select-match placeholder="Select Eligibility Item...">{{$item.name + ' #' + $item.id}}</ui-select-match>
    <ui-select-choices repeat="item.id as item in x.itemsAvailable | filter: $select.search track by $index" refresh="uiSelectRefreshFix($select)" refresh-delay="1000">
        <div ng-bind-html="item.name + ' #' + item.id | highlight: $select.search"></div>
    </ui-select-choices>
</ui-select>

コントローラ

// ui-select bugfix.
$scope.uiSelectRefreshFix = function () {

    if ($scope.uiSelectFix) return; 
    $scope.uiSelectFix = true;

    var fix = $scope.x.itemsSelected;
    $scope.x.itemsSelected = [];

    setTimeout(function() {
        $scope.$apply(function(){
            $scope.x.itemsSelected = fix;
        });
    }, 100)
    console.log([model, query]);
}
于 2016-09-01T02:16:32.417 に答える
0

次のように、倍数を true に設定します。

<ui-select id="facility" multiple='true' ng-model="IdRequest.formData.facilityRequestedArray"  validation="required" ng-disabled="IdRequest.formData.applicantReadOnly" class="drop-down">

この github リンクを参照してください: https://github.com/angular-ui/ui-select/issues/366

施設が重複している場合は、次のように $index でトラックをリピーターに追加します。

<ui-select-choices repeat="facility.id as facility in IdRequest.facilityList track by $index">
于 2015-04-20T18:17:54.857 に答える