使用 angular js 从 select 动态过滤掉值
Filter out values dynamically from a select using angular js
我有一个 select,我在其中填充某些值,如下所示:
值为:
$scope.obj = {codes: [
{code: 1},
{code: 2},
{code: 3}
]};
现在我想动态过滤某些值而不对 $scope.obj 值进行任何更改,即我不想显示 {code:1} 值。我在另一个 $scope 变量中设置了这个值:
$scope.selectedCode = {代码:1};
selected 代码中存在的任何值都不应显示在 select 下拉列表中。我认为这可以使用 angular js 过滤器表达式来完成:
<select ng-options="c.code for c in obj.codes | filter:'c.code !== selectedCode .code'" ng-model="selected">
但是上面显示的是一个空的下拉列表。
任何 help/guidance 最多 welcome.Thanks 提前。 :)
请尝试创建一个过滤后的新对象。
<select ng-options="c.code for c in filteredobj = (obj.codes | filter:'code':'!'+ selectedCode.code)" ng-model="selected">
在控制器中创建辅助方法:
$scope.filterCodes = function(obj) {
return obj.code !== $scope.selectedCode.code;
};
并将其用作自定义过滤器:
<select ng-options="c.code for c in obj.codes | filter:filterCodes" ng-model="selected"></select>
UPD。还有没有controller功能的纯模板方案:
ng-options="c.code for c in obj.codes | filter: '!' + selectedCode.code"
我有一个 select,我在其中填充某些值,如下所示:
值为:
$scope.obj = {codes: [
{code: 1},
{code: 2},
{code: 3}
]};
现在我想动态过滤某些值而不对 $scope.obj 值进行任何更改,即我不想显示 {code:1} 值。我在另一个 $scope 变量中设置了这个值:
$scope.selectedCode = {代码:1};
selected 代码中存在的任何值都不应显示在 select 下拉列表中。我认为这可以使用 angular js 过滤器表达式来完成:
<select ng-options="c.code for c in obj.codes | filter:'c.code !== selectedCode .code'" ng-model="selected">
但是上面显示的是一个空的下拉列表。
任何 help/guidance 最多 welcome.Thanks 提前。 :)
请尝试创建一个过滤后的新对象。
<select ng-options="c.code for c in filteredobj = (obj.codes | filter:'code':'!'+ selectedCode.code)" ng-model="selected">
在控制器中创建辅助方法:
$scope.filterCodes = function(obj) {
return obj.code !== $scope.selectedCode.code;
};
并将其用作自定义过滤器:
<select ng-options="c.code for c in obj.codes | filter:filterCodes" ng-model="selected"></select>
UPD。还有没有controller功能的纯模板方案:
ng-options="c.code for c in obj.codes | filter: '!' + selectedCode.code"