Javascript 在angularjs中编辑表格内容时防止筛选
指的是 我能够成功地为我的表应用筛选器。现在我想改变这个过滤器的工作方式。情况如下:Javascript 在angularjs中编辑表格内容时防止筛选,javascript,angularjs,Javascript,Angularjs,指的是 我能够成功地为我的表应用筛选器。现在我想改变这个过滤器的工作方式。情况如下: 我正在应用映射的过滤器。它为我过滤掉了所有映射的变量。现在,我将更改其中一个过滤变量的值,一旦我删除完整的值,该变量将移动到Unmapped列表,并且用户无法更改该变量。用户现在需要将过滤器更改为All或UnMapped过滤器以编辑该变量 在未映射的情况下也是如此。选择Unmappedfilter,只要我尝试输入值,变量就会消失并移动到“Mapped”列表 我需要做的是仅当我使用ng change从下拉列表中选
映射的过滤器。它为我过滤掉了所有映射的变量。现在,我将更改其中一个过滤变量的值,一旦我删除完整的值,该变量将移动到Unmapped
列表,并且用户无法更改该变量。用户现在需要将过滤器更改为All
或UnMapped
过滤器以编辑该变量
未映射的情况下也是如此。选择Unmapped
filter,只要我尝试输入值,变量就会消失并移动到“Mapped”列表
$scope.filterOpt = 'All';
$scope.emptyOrNull = function (variable) {
if ($scope.filterOpt == "All")
return true;
if ($scope.filterOpt == "Mapped")
return variable.Name && variable.Variable
if ($scope.filterOpt == "UnMapped")
return !(variable.Variable) ;
}
HTML:
<select class="selectpicker form-control" ng-model="filterOpt" ng-change="emptyOrNull()">
<option value="All">All</option>
<option value="Mapped">Mapped</option>
<option value="UnMapped">Un-Mapped</option>
</select>
全部的
映射
未映射
和表:
<tr ng-repeat="var in Mappings | filter: searchVariable | filter : emptyOrNull">
<td>{{var.Name}}</td>
<td>
<div><input-dropdown name="fqn" ng-model="var.Variable" list="variables" ng-disabled="var.IsTrue"></input-dropdown></div>
</td>
</tr>
{{var.Name}}
用户界面:
在上图中,当我选择“从过滤器映射”并尝试更改/删除Value1
时,它不会消失
请提供帮助。您可以做的是添加条件筛选器。这意味着只在您想要的时候应用过滤器,而在您不想要的时候不应用过滤器 您可以检查输入何时以类似的方式聚焦,并切换变量以禁用或启用过滤器
和做条件过滤使用
然后,您可以在更改映射/未映射
下拉列表时将禁用
更新为真实
希望这有帮助,基本上我不明白为什么你想要
| filter:emptyOrNull
,当你只想在更改下拉值的情况下更新UI时
为什么不只更新数组($scope.Mappings
)。在此数组中,只能推送要显示的值
删除过滤器并更新下拉列表ng change
功能,如下所示
这里origaray
是您的原始数组,我只是在更改范围变量
$scope.emptyOrNull = function (variable) {
$scope.Mappings = [];
if ($scope.filterOpt == "All") {
$scope.Mappings = angular.copy(origArray);
} else {
for (var i = 0; i < origArray.length; i++) {
if ($scope.filterOpt == "Mapped") {
if (origArray[i].Name && origArray[i].Variable) {
$scope.Mappings.push(origArray[i]);
}
}
if ($scope.filterOpt == "UnMapped") {
if (!origArray[i].Variable) {
$scope.Mappings.push(origArray[i]);
}
}
}
}
}
$scope.emptyOrNull=函数(变量){
$scope.Mappings=[];
如果($scope.filterOpt==“全部”){
$scope.Mappings=angular.copy(origaray);
}否则{
对于(变量i=0;i
不要对这种要求使用过滤器,它会降低性能。啊,这是我的错误……这就是我要找的。关于表现,我正在努力克服这一点。我有数以千计的变量,这需要很多时间来渲染。