Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/434.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 具有多个下拉条件的角度自定义过滤器_Javascript_Angularjs - Fatal编程技术网

Javascript 具有多个下拉条件的角度自定义过滤器

Javascript 具有多个下拉条件的角度自定义过滤器,javascript,angularjs,Javascript,Angularjs,我正在尝试使用多个下拉列表条件进行筛选。我能够想出如何一个接一个地过滤它们。我希望它们在没有选择任何内容时显示所有内容,value=”“ 但当我将其用于多个下拉列表时,它是有效的 $scope.customFilter = function (data) { if (data.Grade === $scope.filter.grade && data.Slump === $scope.filter.slump && data.F

我正在尝试使用多个下拉列表条件进行筛选。我能够想出如何一个接一个地过滤它们。我希望它们在没有选择任何内容时显示所有内容,value=”“

但当我将其用于多个下拉列表时,它是有效的

$scope.customFilter = function (data) {
    if (data.Grade === $scope.filter.grade && 
      data.Slump === $scope.filter.slump && 
      data.Flow === $scope.filter.flow && 
      data.LastDlvDate === $scope.filter.last_delivered) {
      return true;
    } else if ($scope.filter.grade === '') {
      return true;
    } else {
      return false;
    }
  };
当我现在选择拖放选项时,它不会显示任何内容

这里有一个小插曲:

我不知道为什么日期的$filter不起作用


但我想在选择grade=“1”时显示具体的A。这里是一个工作示例-

怎么了

  • $scope.customFilter
    条件错误-
    data.grade===$scope.filter.grade
    。每个
    $scope.filter.*
    的默认值都是空字符串
    '
    ,因为您将
    &&
    它们一起使用,而选择了
    数据.grade
    ,其他值是
    '==未定义的
    ,结果是
    false
    。所以我把条件改成了
    $scope.filter.grade | | data.grade===$scope.filter.grade&&…
    。这是因为我检查选择是否完全没有改变,我通过返回
    true
    忽略它,然后检查所选的是否等于
    数据。这也使得($scope.filter.grade==''){
    不相关
关于实施的补充说明:

  • 您不必初始化范围变量
    $scope.filter.grade=“”;
    ,Angular将在第一次选择更改时进行初始化
  • 修复了日期筛选器部分,不需要
    $scope.displayDate
    。您可以在模板
    {{last_delivered | date:'dd-MM-yyyy'}中应用筛选器

试着用
ng options
替换
ng repeat
,看看这是否会使任务更简单。我不太确定如何让它开始工作。你能提供一个完整的示例和一些示例数据吗?Claies我添加了一个plunker对不起,我想我一开始问的问题不正确,我现在编辑了这个问题,希望它更有意义e以plunker为例对于上次交付,它在您的plunker中起作用,但在我的代码中,由于某种原因,它得到{last_delivered}的值被转换为不同的时区,并且它不起作用-“2015-11-18T16:00:00.000Z”,任何想法都可能是因为您的
$scope.last\u delivered
应该是所有可能日期的
$scope.product\u last\u delivereds
数组。
$scope.customFilter = function (data) {
    if (data.Grade === $scope.filter.grade) {
      return true;
    } else if ($scope.filter.grade === '') {
      return true;
    } else {
      return false;
    }
  };
$scope.customFilter = function (data) {
    if (data.Grade === $scope.filter.grade && 
      data.Slump === $scope.filter.slump && 
      data.Flow === $scope.filter.flow && 
      data.LastDlvDate === $scope.filter.last_delivered) {
      return true;
    } else if ($scope.filter.grade === '') {
      return true;
    } else {
      return false;
    }
  };