wie ein JSON als String-Parameter an eine Direktive übergeben wird

8

Wenn ich versuche, das unten stehende json-Formular auszuwerten, gibt es einen Fehler -

%Vor%

Warum ist das obige Formular nicht gültig?

Aber das Folgende funktioniert gut -

%Vor%

Ich versuche, das obige JSON als eine Zeichenfolge als param-Eingabe für eine Direktive zu übergeben.

Unten ist der html -

%Vor%

Danke, Murtaza

    
murtaza52 04.02.2013, 13:29
quelle

5 Antworten

21

Setze deine json in ein paar Teile:

%Vor%

Scheint jedoch nicht wie eine kantige Frage. Nicht sicher, was Sie versuchen zu tun:

Wie auch immer, übergeben den JSON an die Direktive gibt es viele Möglichkeiten, das zu tun. Ich bin mir nicht sicher, warum Sie das tun und nicht nur ein Objekt übergeben möchten.

Passing Json kann eine Menge Wege gemacht werden ...

  1. Von Ihrem Attributobjekt:

    %Vor%

    wo

    %Vor%
  2. Aus einem isolierten Bereich:

    %Vor%

    wo

    %Vor%

Aber es ist bei weitem besser, die native eval um jeden Preis zu vermeiden, wenn du kannst. Was in fast allen Fällen möglich ist. Wenn Sie einige Daten haben, fügen Sie sie einfach in ein Objekt in einem Bereichsparameter ein und übergeben sie entweder über eine bidirektionale Eigenschaft in einem isolierten Bereich oder nach Namen und führen ein eckiges $ eval-Objekt aus.

BEARBEITEN: Übergeben Sie ein Objekt in ...

Sie können eine Zwei-Wege-Bindung für einen isolierten Bereich verwenden:

%Vor%

wo

%Vor%

Das wirklich coole Ding dabei ist, wenn Sie eine Bereichseigenschaft verwenden, wird sie bidirektional aktualisiert:

%Vor%

wo

%Vor%

Ich hoffe, das hilft.

    
Ben Lesh 04.02.2013 14:06
quelle
2

Es sieht so aus, als ob Sie versuchen, ein Passwort in einem Formular zu bestätigen. Es gibt viele Möglichkeiten, dies zu tun, ohne auf JSON zurückgreifen zu müssen, um Werte in AngularJS weiterzugeben. Die nützlichste Ressource, die ich online gefunden habe, stammt aus diesem Google-Gruppen-Thread:

  

1) Ссылка wird vergleichen   Wert in einem zweiten Feld mit Modell Wert des ersten Feldes

     

2)    Ссылка vergleicht den Wert in einem zweiten Feld mit    Eingabe Wert des ersten Feldes

     

Der Unterschied mag subtil sein, hat aber praktische Konsequenzen: mit   (2) Die Bestätigungsüberprüfung tritt ein, sobald Sie mit der Eingabe beginnen   alles im ersten Feld. Mit (1) wird die Bestätigung bestätigt   Kick-in nur, nachdem das erste Feld gültig ist. In der E-Mail bestätigen   Beispiel bedeutet dies, dass Sie erst dann keine Bestätigungsfehler anzeigen werden   E-Mail-Validierungsfehler werden aussortiert (so kann sich ein Benutzer auf einen Fehler konzentrieren)   Fehler zu der Zeit).

Quelle: Ссылка

Aus dem ersten Link wird die Direktive wie folgt verwendet:

%Vor%

Wo die ui-validate-equals -Direktive auf das email -Modell zeigt, das in der ersten Eingabe definiert wurde.

Es gibt einige StackOverflow-Antworten , wenn Sie auch nach weiteren Ideen suchen möchten, um Ihr Problem zu lösen .

    
x9hb8wcy6quezjk 04.02.2013 16:23
quelle
2

Siehe auch . @Blesh hat nur beiläufig erwähnt, aber nicht hervorgehoben: Angular bietet Ihnen eine 'sichere' Version von eval() , die perfekt für die Übergabe deklarativer Objekte / Arrays in Ihre Direktive funktioniert, wenn Sie sie nicht auf Ihrer deklarieren wollen Umfang und weise nicht wollen, native eval() zu verwenden. Im Beispiel des OPs verwenden Sie dies einfach innerhalb der Direktive:

%Vor%     
XML 05.04.2014 16:06
quelle
1
  

Scheint jedoch nicht wie eine kantige Frage.

Einverstanden - Vanilla JS kann das gut verarbeiten.

%Vor%     
Ben 16.07.2014 22:48
quelle
0

Verwenden Sie JSON.parse (Zeichenfolge) in eckig. Stellen Sie sicher, dass Ihr Parameter im Zeichenfolgenformat vorliegt.

    
pixparker 07.10.2014 16:03
quelle

Tags und Links