【发布时间】:2017-11-11 05:00:21
【问题描述】:
我想在我的数组中创建一个用于添加和删除值的选择。但值必须是唯一的。
这是我的代码,但无法正常工作,因为我不知道如何隐藏或显示选择中的值
<div ng-app="myApp">
<div ng-controller="myController">
<p>Select something</p>
<select ng-model="selectedBucket"
ng-options="row as row.display for row in bucketEnum | filter:bootstrapValues">
</select>
<button ng-click="add(selectedBucket.value)">
add
</button>
<br>
{{initialSet}}
<br>
{{bucketEnum}}
</div>
</div>
还有控制器和过滤器:
var app = angular.module('myApp', []);
app.controller('myController', function ($scope, $filter) {
$scope.initialSet = [1, 2, 4, 7];
$scope.bucketEnum = [
{ display: '0', value: 0, bool:true },
{ display: '1', value: 1, bool:true},
{ display: '2', value: 2, bool:true },
{ display: '3', value: 3, bool:true },
{ display: '4', value: 4, bool:true },
{ display: '5', value: 5, bool:true },
{ display: '6', value: 6, bool:true },
{ display: '7', value: 7, bool:true }
];
$scope.add = function(value){
$scope.initialSet.push(value);
$scope.selectedBucket = $filter('bootstrapValues')($scope.initialSet, $scope.bucketEnum);
}
});
app.filter('bootstrapValues', function(){
return function(initial, baseBucket){
var result = [];
for(var i = 0; i < initial.length; i++){
var flag = false;
for(var j=1; j<baseBucket.length; j++){ //from 1 or 0.. you call
if(initial[i] === baseBucket[j].value){
flag = true;
baseBucket[j].bool = false;
break; // if there are repeated elements
}
}
}
return result;
};
});
【问题讨论】:
-
如果已经包含在
initialSet数组中,您是否要禁用选择显示值?还是不希望它们出现在选择选项中? -
如果值在数组中,我想隐藏select中的值
-
不幸的是,我认为没有可以设置的属性来隐藏元素。那么,您的解决方案可能是为显示值创建一个数组,并从您可能想要显示的第二个数组中的数据填充它。
-
我不明白:/ 我有两个数组,一个带有数据的数组初始化,第二个带有我想在我的第一个表中添加的值。所以我也初始化了。
标签: angularjs arrays select ng-show