gpt4 book ai didi

javascript - 应用更改字符的过滤器后按名称过滤

转载 作者:太空狗 更新时间:2023-10-29 14:17:35 24 4
gpt4 key购买 nike

我遇到过这样一种情况,我需要过滤由“ng-repeat”指令创建的元素,但我应用了一个自定义过滤器,为每个创建的元素将一个字符与另一个字符交换,反之亦然。

然后,如果我搜索被交换的新字符,过滤器将找不到它 - 除非我搜索旧字符。

如何在使用我的交换字符的自定义过滤器后应用此输入过滤器?

在我的自定义过滤器 brNumber 中,逗号 交换,反之亦然,所以如果我搜索一个点,过滤器将只找到带逗号的。

FIDDLE

< HTML >

<div 
ng-app="myApp"
ng-init="
person=
[
{firstName:'Johnny',lastName:'Dowy'},
{firstName:'Homem,25',lastName:'Cueca,Suja'},
{firstName:'Alleria.Donna',lastName:'Windrunner'}
];"
>

First Name: <input type="text" ng-model="firstName">
<br />
The persons's objects have: | <span ng-repeat="i in person | orderBy: 'firstName' | filter:firstName">{{ ( i.firstName + ' ' + i.lastName ) | brNumber }} | </span>

{ Javascript.js }

app.filter( 'brNumber', function()
{
return function( text )
{
string = text.toString();
returnString = '';

for ( i = 0; i < string.length; i++ )
{
returnString += string[i] === ',' ? '.' :
(
string[i] === '.' ? ',' : string[i]
);
}

return returnString;
}
});

最佳答案

您可以将过滤后的值包装在与 View 中的过滤器相同的函数中。检查这个https://jsfiddle.net/5Lcafzuc/3/

/// wrap filter argument in function
ng-repeat="i in person | orderBy: 'firstName' | filter: replace(firstName)"

/// add function in scope and use it in display filter
var replace = function(text) {
if(!text) {
return false;
}

if(text.indexOf(".") >= 0) {
text = text.replace(".", ",");
} else if(text.indexOf(",") >=0) {
text = text.replace(",", ".");
}

return text;
}

app.controller('myCtrl', function($scope) {
$scope.replace = replace;
});

app.filter( 'brNumber', function() {
return function(text) {
return replace(text);
}
});

关于javascript - 应用更改字符的过滤器后按名称过滤,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29750169/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com