Angularjs 用于Angular$filter的单个属性的自定义比较器

Angularjs 用于Angular$filter的单个属性的自定义比较器,angularjs,Angularjs,首先,我之所以要创建自定义比较器,是因为表达式上的一个属性是数组,例如“tags”,它要求表达式的值按特定顺序排列,否则就不匹配。(因此带有标记['a','b']的表达式将匹配['x','a','b','y'],但不匹配['x','b','a','y']) 我之所以能够绕过这个问题,是因为在Angular的$filter服务中,它允许您提供自定义比较器。但是,我只能根据属性类型进行过滤,而不能根据键的值进行过滤 我只想为对象中的一个属性创建一个自定义比较器。有没有办法不用复制和修改Angular

首先,我之所以要创建自定义比较器,是因为表达式上的一个属性是数组,例如“tags”,它要求表达式的值按特定顺序排列,否则就不匹配。(因此带有标记['a','b']的表达式将匹配['x','a','b','y'],但不匹配['x','b','a','y'])

我之所以能够绕过这个问题,是因为在Angular的$filter服务中,它允许您提供自定义比较器。但是,我只能根据属性类型进行过滤,而不能根据键的值进行过滤

我只想为对象中的一个属性创建一个自定义比较器。有没有办法不用复制和修改Angular的源代码就可以做到这一点

下面是我的自定义比较器的一个示例:(在中找到)

在我的示例中,标记上的过滤器工作得很好,但它不再在$上工作以匹配任何属性,我只能根据属性的类型而不是名称来比较属性。所以像这样的表达永远不会起作用:

{
    includeThese: ['a', 'b'],
    excludeThese: ['x', 'y']
}

我不能完全肯定我理解你的要求。我为您制作了一个带有2个自定义筛选函数的plunkr,一个在列表项中按顺序查找“a”和“b”,另一个在该项的标记中查找“a”和“b”。希望你能把它改成你想要的样子。我认为对于您的目的,自定义过滤器函数将比自定义比较器更容易处理


我不能完全确定我是否理解你的要求。我为您制作了一个带有2个自定义筛选函数的plunkr,一个在列表项中按顺序查找“a”和“b”,另一个在该项的标记中查找“a”和“b”。希望你能把它改成你想要的样子。我认为对于您的目的,自定义过滤器函数将比自定义比较器更容易处理


我不知道这是否对您有帮助,但您可以在表达式中使用带有ng repeat(key,value)的键值对–其中key和value可以是任何用户定义的标识符,而expression是提供要枚举的集合的范围表达式。例如:{'adam':10,'amalie':12}中的:(name,age)。我不知道这是否对您有帮助,但您可以在表达式中使用带有ng repeat(key,value)的键值对–其中key和value可以是任何用户定义的标识符,expression是提供集合枚举的范围表达式。例如:{adam':10,'amalie':12}中的:(name,age)。本例中定义了comparator
inclusiveComparator
,但从未使用过。有使用比较器的例子吗?这里的文档非常混乱。本例中的比较器
inclusiveComparator
已定义,但从未使用过。有使用比较器的例子吗?医生在这里很混乱。
{
    includeThese: ['a', 'b'],
    excludeThese: ['x', 'y']
}