坚持理解角度阵列搜索

时间:2017-05-02 21:48:39

标签: angularjs

请参阅下面的代码。

我是棱角分明的新人。只是不明白这一行

{{ (fields | filter : {fieldName:"houseNum"} : true)[0].fieldLabel}}

如果我们指定false({{ (fields | filter : {fieldName:"houseNum"} : false)[0].fieldLabel}})那么 true in bracket 的含义是什么呢?那么会发生什么?

完整代码

<div ng-app="app" ng-controller="ctrl">
  {{ (fields | filter : {fieldName:"houseNum"} : true)[0].fieldLabel}}
</div>


angular.module('app', []).controller('ctrl', function($scope) {
  $scope.fields = [{
    fieldName: 'houseNum',
    fieldLabel: 'House Number',
    disabled: false
  }, {
    fieldName: 'street',
    fieldLabel: 'Street',
    disabled: false
  }, {
    fieldName: 'city',
    fieldLabel: 'City',
    disabled: true
  }, {
    fieldName: 'state',
    fieldLabel: 'State',
    disabled: true
  }, ]
})

取自https://jsfiddle.net/tridip/q2r3cogj/

的样本

1 个答案:

答案 0 :(得分:1)

根据AngularJS documentation

  

比较器,用于确定是否使用表达式检索值       (当它不是一个函数时)应该被视为基于的匹配       期望值(来自过滤器表达式)和实际值(来自对象)       在数组中)。

     

可以是以下之一:

     

function(actual,expected):该函数将被赋予对象值和       要比较的谓词值,如果两个值都应该返回true       被认为是平等的。

     

true:函数的简写(实际,预期){return       angular.equals(actual,expected)}。这基本上是严格的比较       预期的和实际的。

     

false:一个函数的简写,它将在a中查找子字符串匹配       不区分大小写的方式。原始值转换为字符串。对象是       不与原语进行比较,除非它们有自定义的toString方法       (例如日期对象)。

     

默认为false。

因此将其设置为true需要与要显示的项目完全匹配。错误设置将允许部分匹配,不区分大小写的匹配等。