Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/25.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
在angularjs中使用选择框时进行精确文本过滤_Angularjs - Fatal编程技术网

在angularjs中使用选择框时进行精确文本过滤

在angularjs中使用选择框时进行精确文本过滤,angularjs,Angularjs,我有一个带有一些状态的选择框,根据状态的变化,应该迭代该项,但问题是angularjs过滤器功能与确切文本不匹配 HTML jsbin: 当我选择“已发货”状态时,我只需要获取“item1”,但目前我同时获取“item1”和“item2”。我只是定义了getfilter函数,并在那里停止了,因为我不知道如何继续 请为我提供进一步处理的解决方案您需要实现自己的过滤器,因为angular的默认过滤器使用toLowerCase()。似 filters.filter('exactString', fun

我有一个带有一些状态的选择框,根据状态的变化,应该迭代该项,但问题是angularjs过滤器功能与确切文本不匹配

HTML

jsbin:

当我选择“已发货”状态时,我只需要获取“item1”,但目前我同时获取“item1”和“item2”。我只是定义了getfilter函数,并在那里停止了,因为我不知道如何继续


请为我提供进一步处理的解决方案

您需要实现自己的过滤器,因为angular的默认过滤器使用toLowerCase()。似

filters.filter('exactString', function() {
return function(string, term) {
    return ('' + string).indexOf(term) > -1;
}});

JSFIDLE for angular 1.0.7:

您需要实现自己的过滤器,因为angular的默认过滤器使用toLowerCase()。似

filters.filter('exactString', function() {
return function(string, term) {
    return ('' + string).indexOf(term) > -1;
}});

JSFIDLE for angular 1.0.7:

过滤器工作正常。这不是你面临的问题的原因。 在选择标记中选择
shipped
时,也会显示第二个选项的原因是第二个项目的状态包含单词“shipped”-“Partiallyshipped”。此外,您还选择了不区分大小写选项

您有一些选择:

  • 使用不同的状态,例如一个数字,指示项目是已发货还是部分发货。确保在多个状态下不会出现子字符或数字。这样,选择一个选项确实会过滤掉不相关的项目
  • 首选选项-将第三个参数传递给过滤器。第三个参数将告诉过滤器是否区分大小写。因此,您可以使用如下内容:

  • “true”参数告诉Angular区分大小写。如果将大小写改为“部分装运”,而不是“部分装运”,则此操作将失败-即,使用小写的“装运”而不是大写。

编辑:如下所述,AngularJS的稳定版本目前不支持设置“true”参数以允许筛选器区分大小写。筛选器工作正常。这不是您面临的问题的原因。 当您在选择标记中选择
shipped
时,第二个选项也会显示,原因是第二个项目的状态包含单词“shipped”-“Partiallyshipped”。此外,您选择了不区分大小写的选项

您有一些选择:

  • 使用不同的状态,例如数字,指示项目是已发货还是部分发货。确保在多个状态中没有子字符或数字出现。这样,选择一个选项确实会过滤掉不相关的项目
  • 首选选项-将第三个参数传递给筛选器。此第三个参数将告诉筛选器是否应区分大小写。因此,您可以使用类似以下内容:

  • “true”参数告诉Angular区分大小写。如果您将大小写改为“Partially Shipped”,而不是
    部分装运”
    ,则此操作将失败-也就是说,使用小写的“Shipped”代替大写。

编辑:如下所述,AngularJS的稳定版本目前不支持设置“true”参数以允许过滤器区分大小写

请注意,区分大小写的过滤器相对较新。例如,1.0不支持它。7@alfrescian啊。我不知道。谢谢你的解决方案:)请注意区分大小写的过滤器是相对新的。例如,1.0不支持它。7@alfrescian啊。我不知道。谢谢你的解决方案:)我也会尝试这个选项。谢谢:)我也会试试这个选项。谢谢:)如果答案解决了你的问题,你能将问题标记为已回答吗?如果答案解决了你的问题,你能将问题标记为已回答吗?
filters.filter('exactString', function() {
return function(string, term) {
    return ('' + string).indexOf(term) > -1;
}});