Array Listener ändern [Duplizieren]

8

Wie kann ich eine Änderung an einem registrierten Array (oder zumindest ein Hinzufügen oder Entfernen von Elementen) melden (eine vordefinierte Funktion ausführen)? Ich habe versucht, einen Prototyp zu verwenden. Ich möchte nicht dafür gescholten werden, dass ich nicht einige eigene Code-Beispiele zur Verfügung gestellt habe. Also hier wäre, wie ich gerne es benutzen würde.

%Vor%

Ich brauche keinen Overkill. Ich kenne grundsätzlich den Array-Funktionsumfang, den ich verwenden werde (Push, Pop, Splice und vielleicht ein paar andere). Es ist eine Möglichkeit, den MVC des Backbones zu verwenden. Ich möchte Logik auf einem Array ausführen und DANN die Ansichten entsprechend hervorgehoben haben. Aber die Ansicht ist bereits einer Sammlung beigefügt. Bei jeder Änderung an dieser Sammlung werden die tatsächlichen DOMs in der Ansicht erneut gerendert. Ich will das nicht. Ich möchte einfach eine Klasse zu den entsprechenden DOMs in der Ansicht für CSS-Zwecke hinzufügen oder entfernen.

    
Adrian Bartholomew 11.12.2012, 18:04
quelle

3 Antworten

12

Was ich getan habe ist, dass ich meinen eigenen "Array" -Typ erstellt habe, der nur das Prototyp-Array erweitert hat, dem ich dann meine eigenen Handler hinzugefügt habe.

Zum Beispiel:

%Vor%

Verwendung:

%Vor%

Geige: Ссылка

    
Neal 11.12.2012, 18:06
quelle
2

Sie suchen Object.observe , aber es ist noch nicht weit verbreitet. In Chrome Canary können Sie mit "Experimental JavaScript" auf about: flags Folgendes ausprobieren:

%Vor%     
pimvdb 11.12.2012 18:29
quelle
1

So etwas wird eine globale Überwachung von Array-Push () 's einrichten.

%Vor%

Andernfalls können Sie, wie Neal vorgeschlagen hat, eine andere Klasse erstellen.

%Vor%

Um einfache Überwachung von N Funktionsaufrufen gleichzeitig einzurichten.

%Vor%

Eine ähnliche Anpassung sollte auch für das erste Beispiel funktionieren.

    
svidgen 11.12.2012 18:17
quelle