改变
%select{'ng-model' => 'device', 'ng-options' => 'device.serial_number for device in devices | filter:search'}
至
%select{'ng-model' => 'device', 'ng-options' => 'device.serial_number for device in filtered_devices=(devices | filter:search)'}
并且您将在您的范围内拥有 filters_devices 来处理您希望的任何事情
$scope.$watch('filtered_devices', function(value){
if (filtered_devices) {
$scope.device = filtered_devices[0];
}
}, true);
所以你不必再次过滤......
更新:
在使用我建议的模型后,我发现将过滤器表达式作为 ng-options 的源可能是个坏主意。我认为原因是每次评估过滤器时,它都会返回一个新集合,因此数字循环得出结论,它是脏的,需要重新绑定或其他什么。
我现在使用不同的模式,其中我有一个filtered_items
集合,$scope
我正在通过过滤器输入上的“ng-change”更新它。所以filtered_items
ng-options 绑定的不会改变,除非它真的需要改变......