Heim > Web-Frontend > js-Tutorial > Hauptteil

Detaillierte Erläuterung der benutzerdefinierten Filter in AngularJS_AngularJS

WBOY
Freigeben: 2016-05-16 15:23:20
Original
1335 Leute haben es durchsucht

Filter besteht, wie der Name schon sagt, darin, eine Eingabe zu empfangen, sie gemäß einer bestimmten Regel zu verarbeiten und dann das verarbeitete Ergebnis zurückzugeben. Es wird hauptsächlich zur Datenformatierung verwendet, z. B. zum Abrufen einer Teilmenge eines Arrays, zum Sortieren von Elementen in einem Array usw. ng verfügt über einige integrierte Filter: Währung (Währung), Datum (Datum), Filter (Teilzeichenfolgenübereinstimmung), JSON (formatiertes JSON-Objekt), LimitTo (Grenzzahl), Kleinbuchstaben (Kleinbuchstaben), Großbuchstaben (Großbuchstaben). , Zahl (Anzahl), orderBy (Sortierung). Insgesamt neun Typen. Darüber hinaus können Sie auch Filter anpassen, was leistungsstark ist und alle Datenverarbeitungsanforderungen erfüllen kann.

AngularJS stellt uns einige integrierte Filter zur Verfügung. Hier sind einige Szenarien für benutzerdefinierte Filter.

Benutzerdefinierter Filter ohne Parameter

//过滤 不带参数
app.filter('ordinal', function () {
return function (number) {
if (isNaN(number) || number < 1) {
return number;
} else {
var lastDigit = number % 10;
if (lastDigit === 1) {
return number + 'st'
} else if (lastDigit === 2) {
return number + 'nd'
} else if (lastDigit === 3) {
return number + 'rd'
} else if (lastDigit > 3) {
return number + 'th'
}
}
}
});
Nach dem Login kopieren

Wird ungefähr so ​​verwendet:

{{777 |. Ordnungszahl}}

Filtern mit Parametern

Konvertieren Sie Buchstaben an einer bestimmten Position in Großbuchstaben.

//过滤 带参数
app.filter('capitalize', function () {
//input 需要过滤的元素
//char位置,索引减一
return function (input, char) {
if (isNaN(input)) {
//如果序号位置没有设置,索引位置默认是0
var char = char - 1 || 0;
//把过滤元素索引位置上的字母转换成大写
var letter = input.charAt(char).toUpperCase();
var out = [];
for (var i = 0; i < input.length; i++) {
if (i == char) {
out.push(letter);
} else {
out.push(input[i]);
}
}
return out.join('');
} else {
return input;
}
}
}); 
Nach dem Login kopieren

Wird ungefähr so ​​verwendet:

{{'seven' |

Sammlung filtern

Filtern Sie Elemente in der Sammlung heraus, die bestimmte Bedingungen erfüllen.


var app = angular.module('filters', []);
app.controller('demo', function ($scope) {
$scope.languages = [
{name: 'C#', type: 'static'},
{name: 'PHP', type: 'dynamic'},
{name: 'Go', type: 'static'},
{name: 'JavaScript', type: 'dynamic'},
{name: 'Rust', type: 'static'}
];
});
//过滤集合
app.filter('staticLanguage', function () {
return function (input) {
var out = [];
angular.forEach(input, function (language) {
if (language.type === 'static') {
out.push(language);
}
});
return out;
}
}); 
Nach dem Login kopieren
Wird ungefähr so ​​verwendet:

<li ng-repeat="lang in languages | staticLanguage">{{lang.name}}</li>
Nach dem Login kopieren

Filtern, mehrere Parameter übernehmen, mehrere Dinge tun

Definieren Sie die Anzeigeeinheit und die Anzeigeposition der Nummer.

var app = angular.module('filters', []);
app.controller('demo', function ($scope) {
$scope.digit = 29.88;
});
//过滤 做多件事 多个参赛
app.filter('customCurrency', function () {
return function (input, symbol, place) {
if (isNaN(input)) {
return input;
} else {
//检查symbol是否有实参
var symbol = symbol || '¥';
var place = place === undefined &#63; true : place;
if(place===true){
return symbol+input;
}else{
return input + symbol;
}
}
}
}); 
Nach dem Login kopieren
Wird ungefähr so ​​verwendet:


<p><strong>Original:</strong></p>
<ul><li>{{digit}}</li></ul>
<p><strong>Custom Currency Filter</strong></p>
<ul>
<li>{{digit | customCurrency}} --Default</li>
<li>{{digit | customCurrency:'元'}} --custom symbol</li>
<li>{{digit | customCurrency:'元':false}} -- custom symbol and custom location</li>
</ul>
Nach dem Login kopieren

Zwei Möglichkeiten, den Filter zu verwenden

1. Filter in der Vorlage verwenden

Wir können den Filter direkt in {{}} verwenden, gefolgt von |, um den Ausdruck zu trennen:

{{ expression | filter }}
Nach dem Login kopieren
Sie können auch mehrere Filter zusammen verwenden und die Ausgabe des vorherigen Filters wird als Eingabe des nächsten Filters verwendet (kein Wunder, dass dieses Produkt wie eine Pfeife aussieht...)

{{ expression | filter1 | filter2 | ... }}
Nach dem Login kopieren
Filter kann Parameter empfangen, und die Parameter werden wie folgt durch : geteilt:

{{ expression | filter:argument1:argument2:... }}
Nach dem Login kopieren

Zusätzlich zur Formatierung der Daten in {{}} können wir auch Filter in der Anweisung verwenden, zum Beispiel zuerst das Array filtern und dann die Ausgabe in einer Schleife ausführen:

<span ng-repeat="a in array | filter ">
Nach dem Login kopieren

2. Filter in Steuerung und Service verwenden

Filter können in unserem JS-Code auch durch die uns bekannte Abhängigkeitsinjektion verwendet werden. Wenn ich beispielsweise den Währungsfilter in einem Controller verwenden möchte, muss ich ihn nur in den Controller einfügen folgt:

app.controller('testC',function($scope,currencyFilter){
$scope.num = currencyFilter(123534); 
}
Nach dem Login kopieren
Verwenden Sie {{num}} in der Vorlage, um 123.534,00 $ direkt auszugeben! Das Gleiche gilt für die Verwendung von Filtern in Diensten.

An dieser Stelle haben Sie vielleicht Zweifel, ob ich mehrere Filter einzeln in den Controller einbauen möchte? Kleiner Bruder, keine Sorge, ~ng bietet einen $filter-Dienst zum Aufrufen des erforderlichen Filters. Sie müssen nur einen $filter einfügen. Die Verwendungsmethode ist wie folgt:

app.controller('testC',function($scope,$filter){
$scope.num = $filter('currency')(123534);
  $scope.date = $filter('date')(new Date()); 
}
Nach dem Login kopieren
Derselbe Effekt kann erzielt werden. Der Vorteil besteht darin, dass Sie bequem verschiedene Filter verwenden können.

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!