Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在angularjs中编辑表格内容时防止筛选_Javascript_Angularjs - Fatal编程技术网

Javascript 在angularjs中编辑表格内容时防止筛选

Javascript 在angularjs中编辑表格内容时防止筛选,javascript,angularjs,Javascript,Angularjs,指的是 我能够成功地为我的表应用筛选器。现在我想改变这个过滤器的工作方式。情况如下: 我正在应用映射的过滤器。它为我过滤掉了所有映射的变量。现在,我将更改其中一个过滤变量的值,一旦我删除完整的值,该变量将移动到Unmapped列表,并且用户无法更改该变量。用户现在需要将过滤器更改为All或UnMapped过滤器以编辑该变量 在未映射的情况下也是如此。选择Unmappedfilter,只要我尝试输入值,变量就会消失并移动到“Mapped”列表 我需要做的是仅当我使用ng change从下拉列表中选

指的是

我能够成功地为我的表应用筛选器。现在我想改变这个过滤器的工作方式。情况如下:

  • 我正在应用
    映射的
    过滤器。它为我过滤掉了所有映射的变量。现在,我将更改其中一个过滤变量的值,一旦我删除完整的值,该变量将移动到
    Unmapped
    列表,并且用户无法更改该变量。用户现在需要将过滤器更改为
    All
    UnMapped
    过滤器以编辑该变量

  • 未映射的情况下也是如此。选择
    Unmapped
    filter,只要我尝试输入值,变量就会消失并移动到“Mapped”列表

  • 我需要做的是仅当我使用ng change从下拉列表中选择filter时应用filter,并且当我尝试编辑某个变量时,filter不应该工作

    代码如下:

    对于过滤器:

     $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

    不要对这种要求使用过滤器,它会降低性能。

    啊,这是我的错误……这就是我要找的。关于表现,我正在努力克服这一点。我有数以千计的变量,这需要很多时间来渲染。