使用过滤器在选项中搜索在angularJS中添加空选项
我对AngularJS中的过滤器有问题。我使用过滤器显示搜索框中基于选项的输入。一切正常,但每次我搜索时(除了默认选项(使用使用过滤器在选项中搜索在angularJS中添加空选项,angularjs,angularjs-filter,Angularjs,Angularjs Filter,我对AngularJS中的过滤器有问题。我使用过滤器显示搜索框中基于选项的输入。一切正常,但每次我搜索时(除了默认选项(使用ng model设置)都会在结果中添加一个空选项 我为标签设置了ng型号 这是我的密码 <div class="choosePatternHeader"> <span>Pattern name</span> <input ng-model="obj.name" type="text"> </div>
ng model
设置)都会在结果中添加一个空选项
我为
标签设置了ng型号
这是我的密码
<div class="choosePatternHeader">
<span>Pattern name</span>
<input ng-model="obj.name" type="text">
</div>
<div class="select_div">
<select size="4" ng-model="pattern" ng-options="p.name for p in patterns | filter:obj">
</select>
</div>
图案名称
这是我搜索“模式4”时的结果
模式4
搜索“模式1”(默认选项)时的结果
模式1
这里有一个如果
ng model
设置为ng options
中没有的值,AngularJS确实会添加一个虚拟选项。当过滤器不返回任何值时(当ng options
为空时,ng model
永远不能在其中),我不知道有什么方法可以防止出现这种情况,但当它返回时,您可以将ng model
设置为第一项,这意味着不会创建虚拟选项。您可以使用ng change
或类似方法来完成此操作。同样的情况也会发生在
上,因此我想这就是根本问题所在
我找到的唯一“解决方案”是通过定义一个空选项来简单地利用空值,例如,请选择
我解决了以下问题
function MyController($scope, $filter)
{
$scope.patterns=[{name:'pattern 1'},{name:'pattern 2'},{name:'pattern 3'},{name:'pattern 4'}];
$scope.pattern=$scope.patterns[0];
$scope.$watch('obj.name', function(value){
var filtered_devices = $filter('filter')($scope.patterns, {name:$scope.obj.name});
if (filtered_devices) {
$scope.pattern = filtered_devices[0];
}
}, true);
}
我添加了ng模型。试试我的jsiddle链接。直到我在searchbox中插入一个字符串以过滤您需要的数据之前,一切都正常。我已经在AngularJS的Git上创建了一个问题
<select class="ng-pristine ng-valid" ng-options="p.name for p in patterns | filter:obj" ng-model="pattern" size="4">
<option value="0">pattern 1</option>
</select>
function MyController($scope, $filter)
{
$scope.patterns=[{name:'pattern 1'},{name:'pattern 2'},{name:'pattern 3'},{name:'pattern 4'}];
$scope.pattern=$scope.patterns[0];
$scope.$watch('obj.name', function(value){
var filtered_devices = $filter('filter')($scope.patterns, {name:$scope.obj.name});
if (filtered_devices) {
$scope.pattern = filtered_devices[0];
}
}, true);
}