AngularJS のこのより高度なフィルタリング メカニズムに関するドキュメントや質問がどこにもないことに本当に驚いています。これはどの UI にも不可欠です。
現在のアイテムを含む選択オプションを除外する必要があります。問題は、フィルターに到達するアイテムを反復処理するときに各オプションをどのようにつなぎ合わせ、フィルター処理されたリスト内の各選択に対して適切な結果を返すことができるかです。
たとえば、カナダ、英国、米国の 3 つの地域がある場合、select 入力は次のようになります。
Canada
[select]
[option0] United Kingdom
[option1] United States
United Kingdom
[select]
[option0] Canada
[option1] United States
United States
[select]
[option0] Canada
[option1] United Kingdom
.. 等々...
HTML:
<div ng-repeat="region in data.regions">
<h2> {{region.name}} </h2>
<input ui-select2="version2" type="hidden" name="keywordsLocal-{{$index}}" class="region-keywords input-xlarge" data-ng-model="data.regions[$index].keywords" required-multiple />
<select ui-select2 id="copy-{{$index}}" ng-show="region.length > 1" class="input-xlarge" ng-click="_copy($event, $index)" data-ng-model="data.regions[$index].keywords">
<option value="">Use the same keywords as:</option>
<option ng-repeat="region in data.regions | myFilter" value="{{region.keywords}}">{{region.name}}</option>
</select>
</div>
Javascript:
app.filter('myFilter', function() {
return function(items) {
var group = [];
for (var i = 0; i < items.length; i++) {
group.push(items.name);
}
for (var i = 0; i < group.length; i++) {
group[i].splice(i, 1);
}
return group;
};
});