2012-03-30 2 views
0

Ich möchte in der Lage sein, Elemente aus einem Array in Javascript hinzuzufügen und zu löschen. Wenn ein Element zum Array hinzugefügt wird, möchte ich, dass eine andere Funktion benachrichtigt wird, welches Element hinzugefügt wurde. Wenn ein Artikel gelöscht wird, möchte ich, dass eine Funktion benachrichtigt wird, was gelöscht wurde.Rückruf, wenn Liste in CoffeeScript/JS bearbeitet wird

Ich benutze CoffeeScript, aber eine Antwort oder ein Punkt in eine Richtung in CoffeeScript oder JS wäre sehr hilfreich.

+0

Haben Sie einen Code geschrieben, um loszulegen? Sie können ein Objekt erstellen, das Ihr Array enthält, Ihre Hinzufügungsmethode, Ihre Löschmethode, möglicherweise ein Tracking-Array zum Speichern aller ausgeführten Aktionen usw. –

Antwort

1
watchMe = [] 

doPush = (value)-> 
    # do whatever 

watchMe.push = -> 
    doPush arguments[0] 
    Array.prototype.push.apply @, arguments 

# this will call doPush with 'foo', and add 'foo' to the watchMe array 
watchMe.push 'foo' 

können Sie native neu definieren Array.prototype Methoden auf dem Array, rufen Sie Ihre benutzerdefinierte Funktion und dann die native Javascript-Funktion Elternteil.

Das obige Beispiel zeigt, wie das Hinzufügen von Elementen über push() überschrieben wird. Sie würden das gleiche zum Entfernen von Elementen tun mit pop(), splice() usw.

Check out W3schools für eine detaillierte Auflistung der Array-Methoden, die Sie über die Methode überlasten verwenden.

Here's a link zu einer ausführlicheren Coffeescript-Demo der oben genannten. Sie können lokal testen oder kopieren und fügen Sie das auf coffeescript.org

0

Ein weiterer cooler Ansatz ist Array.observe siehe MDN. Sein Teil von ECMA 7 Spec, aber bis dahin können Sie eine Polyfill verwenden ;-)

Verwandte Themen