Tôi thực sự ngạc nhiên khi không có tài liệu nào ở bất kỳ đâu hoặc các câu hỏi liên quan đến cơ chế lọc nâng cao hơn này cho AngularJS - đó là điều cần thiết cho bất kỳ giao diện người dùng nào.AngularJS lọc nhiều đầu vào lựa chọn
Tôi cần phải lọc ra các tùy chọn đã chọn bao gồm mục hiện tại. Câu hỏi đặt ra là làm thế nào tôi có thể tách ra từng tùy chọn khi chúng tôi lặp qua các mục đến bộ lọc của chúng tôi và trả lại kết quả phù hợp cho từng lựa chọn trong danh sách đang được lọc.
ví dụ, nếu chúng ta có ba vùng - Canada, Vương quốc Anh, Hoa Kỳ - sự lựa chọn đầu vào nên đọc như thế này:
Canada
[select]
[option0] United Kingdom
[option1] United States
United Kingdom
[select]
[option0] Canada
[option1] United States
United States
[select]
[option0] Canada
[option1] United Kingdom
.. và vv ...
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;
};
});
Cám ơn câu trả lời của bạn! Tôi thực sự không nghĩ rằng có một cách khả thi để đạt được điều này? ít nhất là không có kiến thức đúng về dịch vụ lọc $, vấn đề là tôi đang sử dụng ui-select2 không hỗ trợ ng-options, fml! – iamwhitebox
Cảm ơn bạn một lần nữa vì đã cập nhật - rất thú vị – iamwhitebox