UI-Select 0.8.4 を使用していて、大きなデータ セットがあります。次に、UI-Select を使用して、データ セットの横にあるドロップダウンにプロパティ値を表示します。それをフィルターに使っています。したがって、ドロップダウンから選択すると、結果がフィルタリングされます。
ドロップダウンのアイテムにカーソルを合わせるたびに、常に ng-repeat フィルターが起動します。
私はng-repeatで大きなセットを扱っているため、これは私のアプリケーションに遅れをとっています。
どうしてこれなの?
GIF: http://i.imgur.com/cStlXzy.gif
プランカー(コンソールを開いて自分の目で確かめてください) : http://plnkr.co/edit/OxiutZ8t4IX1bOxiOTgo?p=preview
HTML:
<h3>Age list</h3>
<p>Selected: {{age.selected}}</p>
<ui-select ng-model="age.selected" ng-disabled="disabled" style="width: 300px;">
<ui-select-match placeholder="Select a person">{{$select.selected}}</ui-select-match>
<ui-select-choices repeat="age in ageArray | filter: $select.search">
<div ng-bind="age | highlight: $select.search"></div>
</ui-select-choices>
</ui-select>
JavaScript:
$scope.theFilter = function(item) {
console.log(item);
return item;
};
$scope.ageArray = [];
$scope.$watch('people', function(item) {
for(var i = 0; i < item.length; i++) {
$scope.ageArray.push(item[i].age);
}
});
$scope.people = [
{ name: 'Adam', email: 'adam@email.com', age: 10 },
{ name: 'Amalie', email: 'amalie@email.com', age: 12 },
{ name: 'Wladimir', email: 'wladimir@email.com', age: 30 },
{ name: 'Samantha', email: 'samantha@email.com', age: 31 },
{ name: 'Estefanía', email: 'estefanía@email.com', age: 16 },
{ name: 'Natasha', email: 'natasha@email.com', age: 54 },
{ name: 'Nicole', email: 'nicole@email.com', age: 43 },
{ name: 'Adrian', email: 'adrian@email.com', age: 21 }
];
編集:「データセット配列」からプロパティ値をフィルタリングしてドロップダウンで使用しようとしましたが、機能しません。
編集 2:時計がこれをトリガーしていると思われる場合は、時計を削除しましたが、これはまだ問題です: http://plnkr.co/edit/oD3Tt3vfjtOjADMnemW1?p=preview
編集 3:これに対する解決策がまだ見つかっていないため、 selected にこだわっています。問題を作成しましたが、応答がありません。これを修正したい場合は、問題に賛成票を投じてください。