Ich habe ein Array von Objekten und jedes Objekt hat eine E-Mail-Absender-Eigenschaft wie meine sender{[email protected]}
. Jetzt möchte ich eine Tabelle mit 2 Werten füllen: 1) Name ("mein Absender") und 2) Adresse ("[email protected]").AngularJS Filter/Eigenschaft zum Objekt hinzufügen
Momentan verwende ich einen Filter, um meinem Objekt die 2 neuen Eigenschaften hinzuzufügen und es mit einer ng-Wiederholung zu rendern. Mein Problem ist jetzt, dass ich einen Fehler
[$ rootScope: infdig]
(aber Ergebnis Rendering ist in Ordnung). Ich habe ein wenig gegoogelt und das Problem könnte sein, dass ich ein neues Array in meinem Filter erstelle und die Länge der Eigenschaft nicht mit der Objektlänge von ng-repeat übereinstimmt.
Ich bin neu bei angularjs und ich bin mir nicht sicher, ob ich den Filter völlig falsch benutze und es gibt einen viel besseren Weg für meine gesuchte Lösung?
Demo-Code JS:
demoApp.filter("customFilter", function() {
return function (input) {
var result = [];
if (input && input.length && input.length > 0) {
for (var i = 0; i < input.length; i++) {
var senderName = "";
var senderDomain = "";
var both = input[i].Name;
both = both.split("").reverse().join("");
senderName = both.substring(both.indexOf("<") + 1).split("").reverse().join("");
senderDomain = both.substring(1, both.indexOf("<")).split("").reverse().join("");
var domainBeforeAt = senderDomain.split("@")[0];
var domainAfterAt = senderDomain.split("@")[1];
var output = {
"customId": i,
"displayName": senderName,
"domain": {
"full": senderDomain,
"beforeAt": domainBeforeAt,
"afterAt": domainAfterAt,
}
}
result.push(output);
}
}
return result;
}
});
Demo-Code HTML:
<div ng-repeat="sender in list.Sender | customFilter track by $index">
Ja, das ist die richtige Richtung - danke! :) kann ich {{sender.Name | customFilter: 'domain.full'}} ohne eine Bewertung in meinem Filter? (return eval ("output." param);) – Chris
Gut, dass es geholfen hat! Bitte beachten Sie mein Update bezüglich verschachtelter Parameter. –