Warum funktionieren AngularJS Filter nicht innerhalb eines ng-if?

8

Ich habe eine einfache AngularJS-Seite mit verschiedenen Abschnitten, die ich & amp; ausblenden, wenn auf Links geklickt wird. Einer dieser Bereiche hat eine wiederholte Liste, die gefiltert werden kann.

Wenn der Abschnitt, der die Liste enthält, mit ng-show oder ng-hide angezeigt / versteckt wird, verhält er sich normal. Wenn ng-if verwendet wird, kann die Liste nicht gefiltert werden.

Demos

Beispiel-HTML

%Vor%

Sample Angular

%Vor%     
Chris Barr 22.01.2015, 19:05
quelle

1 Antwort

2

Ich habe keinen Master-Abschluss zum Thema Prototypische Vererbung, aber ich werde versuchen, es in Kürze zu erklären (es gibt eine Menge Ressourcen zu diesem Thema);

  • Number
  • String
  • Boolean
  • null
  • undefined
  • Symbol (ab ES6)

werden als Primitive (MDN) angesehen.

Jetzt - wenn Sie ein primitives Element von Ihrem übergeordneten Bereich erben, passiert tatsächlich, dass der untergeordnete Bereich den angegebenen primitiven Wert "spiegelt" oder "schattiert". Als solches können Sie es als eine Kopie der oben genannten vorstellen.

Das ist grob die Natur von Primitiven im Kontext der Prototypischen Vererbung.

Dies kann deutlich in einer modifizierten Version deiner kaputten Geige beobachtet werden.

Versuchen Sie, mit den beiden Eingängen zu spielen, und Sie sehen, dass eine Verbindung der beiden Werte besteht, wenn Sie nur die äußere Eingabe berühren (d. h. der untergeordnete Wert "überschattet" den übergeordneten Wert). Aber sobald Sie den inneren Eingang berühren, trennen sich die Werte voneinander.

Die empfohlene Möglichkeit, dies zu umgehen, besteht darin, eine Referenz für eine Eigenschaft in Ihrem Modell zu verwenden (ich sage Modell, aber eigentlich ist es nur ein JS-Objekt) weiter oben definiert die Prototyp-Kette;

%Vor%

Nun sollten Sie mit ngIf , ngSwitch , ngRepeat weitermachen, um einige der eckigen Anweisungen zu nennen, die einen neuen Bereich erstellen.

Ressourcen zum Thema

Kasper Lewau 04.11.2015 11:56
quelle

Tags und Links