Javascript 删除空选项ng REPECT和ng选项after filter
有几个问题与此非常相似,但我一直无法找到解决方案 我有一个使用angularJS的选择列表。我需要使用title属性,以便使用ng repeat创建选项,即使使用ng selected始终选择第一个选项,也始终存在一个空白选项Javascript 删除空选项ng REPECT和ng选项after filter,javascript,angularjs,Javascript,Angularjs,有几个问题与此非常相似,但我一直无法找到解决方案 我有一个使用angularJS的选择列表。我需要使用title属性,以便使用ng repeat创建选项,即使使用ng selected始终选择第一个选项,也始终存在一个空白选项 即使我做出选择,空白选项也会消失,如果我过滤掉所选的值,空白将再次出现。 我使用NG选项(不包括我需要的TITLE属性)和一个缺省值来包含一个选择列表,以显示在过滤器之后出现空白。 我希望的行为是永远不要有一个空白选项(总是选择第一个选项就可以了),并且可能每个选项都有一
即使我做出选择,空白选项也会消失,如果我过滤掉所选的值,空白将再次出现。
我使用NG选项(不包括我需要的TITLE属性)和一个缺省值来包含一个选择列表,以显示在过滤器之后出现空白。 我希望的行为是永远不要有一个空白选项(总是选择第一个选项就可以了),并且可能每个选项都有一个用于特殊处理点击事件的指令
提前谢谢 JS小提琴:
{{p.name}}
我用叉子叉了你的小提琴(如果我可以直截了当的话):
这在某种程度上解决了这个问题。虽然我还没有让它与过滤器一起正常工作
无论如何,我在这里要做的是使用person.id作为每个选项的值
<select ng-model="person.current">
<option ng-repeat="p in people | filter:person.SearchTerm" ng-selected="$first" value="{{p.id}}" title="{{p.name}}">
{{p.name}}
</option>
</select>
但这仍然不是100%。我有点困惑为什么当你过滤选择……/P>时空格出现。
另一种可能有效也可能无效的方法是使用类似于filterPeople()中的ng repeat=“p
,并在filterPeople函数中筛选数组。但我不确定这是否会改变任何内容
更新:我在这里测试了我的建议:
如果将选定对象设置为筛选数组中的第一个对象,则该操作有效。每次创建新的筛选数组时,我都会执行此操作:
$scope.filterPeople = function () {
var array = filterFilter($scope.people, $scope.person.SearchTerm);
$scope.person.current = array[0].id;
return array;
};
当实际选择了与select中可见的对象不同的另一个对象时,事情似乎变得复杂起来。这是可以理解的:)您的实际问题是ngModel中的值引用的是select中不再存在的值 解决方案是,无论何时更改选择选项,都要检查person.current以确保它指向有效的条目
这也意味着您可能希望将筛选器移动到控制器中,并在作用域中设置选项(您可以在代码中使用$filter服务来获得相同的行为,)。这样,您可以在控制器中设置一个函数来检查person.current是否有效,如果无效,则将其设置为所需的选项(例如,第一个选项).当所有项目都被过滤掉时,上面引用的毛发是由于一个空数组,并通过以下方式修复:
if(array.length>0)
$scope.person.current = array[0].id;
希望这有帮助
$scope.filterPeople = function () {
var array = filterFilter($scope.people, $scope.person.SearchTerm);
$scope.person.current = array[0].id;
return array;
};
if(array.length>0)
$scope.person.current = array[0].id;