Hat AngularJS eine Syntax, um eine Eigenschaft innerhalb eines div zu aliasieren?

8

Das ist eine seltsame Frage, aber hier ist die Idee:

Nehmen wir an, ich habe ein komplexes JSON-Objekt, das von einem HTTP-Aufruf zurückkommt und an das $scope anfügt. Etwas wie das:

%Vor%

Wenn ich nun einen Überblick über die Kaufhistorie in einem AngularJS-Partial anzeigen wollte, könnte ich so etwas machen:

%Vor%

Die wirklich praktische Sache an diesem Format (obwohl es hier nicht so offensichtlich ist mit so wenigen Requisiten) ist, dass der beschriebene Einkauf als p aliasiert ist. Ich muss nicht obj.purchase_hist[0].item_id machen, ich kann nur p.item_id machen.

Aber was ist, wenn ich die Hausadresse des Benutzers zeige? Muss ich das wirklich tun?:

%Vor%

Das ist wirklich ausführlich. Ich würde viel lieber etwas verwenden, das der Syntax controller as ... ähnlich ist, etwa so:

%Vor%

Gibt es in AngularJS so etwas? Leider bin ich nicht in der Lage Plugins in meiner Umgebung zu verwenden, also suche ich speziell nach einem Teil des eckigen Kerns, der auf diese Weise funktioniert.

Danke!

    
Ken Bellows 06.08.2015, 14:02
quelle

7 Antworten

7

Ich habe diese kleine Direktive geschrieben, mit der Sie ausführen können, was Sie wollen:

Richtlinie ngAlias ​​

%Vor%

Setzen Sie beispielsweise Ihr Objekt in Ihrem Controller

Controller

%Vor%

Und Sie können es verwenden:

HTML

%Vor%     
Paul Boutes 06.08.2015, 14:31
quelle
5

@PaulBoutes lieferte die Antwort, die ich brauchte, und er sollte den Kredit bekommen; Ich wollte nur die Version der Richtlinie hinzufügen, auf die ich mich aufgrund seiner Antwort festgelegt habe.

%Vor%

Die gleiche Grundidee wie die von Paul, nur etwas aufgeräumt und etwas flexibler in Bezug auf Leerzeichen und so gemacht.

Anwendungsbeispiel:

%Vor%     
Ken Bellows 17.08.2015 13:41
quelle
4

Sicherlich gibt es keinen Mangel an praktikablen Lösungen hier, aber es sollte nicht schaden, einen anderen hinzuzufügen.

Ich habe das neulich zusammengeworfen, um mir ein wenig Tipparbeit zu ersparen und meinen HTML-Code leserlicher zu machen. Es erstellt einen neuen untergeordneten Gültigkeitsbereich, sodass der vorhandene Gültigkeitsbereich nicht mit diesen Aliasen verschmutzt wird. Es funktioniert einfach, indem Sie die Eigenschaft des übergeordneten Bereichs an den neuen untergeordneten Bereich mit dem von Ihnen angegebenen Namen binden.

%Vor%

Also, anstatt das zu tun:

%Vor%

Mach das:

%Vor%

Oder machen Sie es ohne as :

%Vor%     
The DIMM Reaper 01.10.2016 03:46
quelle
1
%Vor%

Ссылка

    
Deblaton Jean-Philippe 06.08.2015 14:15
quelle
0

Soweit ich weiß, gibt es nichts wirklich einfaches. Es gibt einige Hacks. Sie können Objekt mithilfe eines neuen Controllers dem neuen Bereich zuordnen

%Vor%

wo Strg% makeAlias -Argument nur als home

in seinem Gültigkeitsbereich speichert %Vor%

Eine andere Lösung ist die Verwendung von $scope.$watch und das Zuordnen eines Objekts zu dem bequemeren.

    
farincz 06.08.2015 14:23
quelle
0

Ich denke nicht, dass Angular Out-of-Box-Unterstützung für solche Dinge bietet. Aber Sie können definitiv Domain-Objekt erstellen. Konvertieren Sie Ihre HTTP-Antwort in Domain-Objekt. Innerhalb Ihres Domain-Objekts können Sie eine Hilfsmethode verwenden, um die erforderlichen Informationen zu erhalten. In Ihrem Fall können Sie beispielsweise ein Domain-Objekt wie dieses haben

%Vor%

Sie können dieses Domain-Objekt in Ihrem Controller verwenden

%Vor%

in HTML können Sie

verwenden %Vor%

Sie können Ihre Domain neu definieren, um die Sache zu vereinfachen. Es könnte zusätzliche Arbeit sein. Aber wenn du immer und immer wieder dasselbe machen musst. Es kann Spaß machen, Code auf diese Weise zu schreiben

    
Brijesh pant 06.08.2015 14:39
quelle
0

Ich bin gerade auf dieses Problem gestoßen und habe die ngAlias-Direktive ausprobiert, die gut oder schlecht funktioniert, ich weiß es nicht, weil ich Probleme hatte, wahrscheinlich aufgrund eines anderen nicht zusammenhängenden Fehlers, und ich entschied mich dafür Methode:

%Vor%

Tada! "obj.user.contact.home" hat jetzt einen Alias ​​für "uhome". Ich glaube, dass diese Lösung genau das ist, was Sie wollten, als Sie diese Frage gestellt haben, denn sie verwendet buchstäblich ng-repeat und hat daher alle Vorteile des eingebauten Alias-Mechanismus von ng-repeat.

    
JohnTD 10.10.2017 17:23
quelle

Tags und Links