2016-07-31 9 views
1

ich AngularJS verwende, und ich habe diese Codezeile:Javascript unshift() auf HTML-Element-Array

// Get our elements 
var elements = angular.element(options.animation.element).children().children(); 

mit dieser Sammlung würde Ich mag eine gewisse Elemente nehmen und sie vom Ende bewegen die Front. Ich habe versucht, wie folgt aus:

var stop = elements.length - options.itemsToShow, 
    elementsToMove = elements.splice(stop, options.itemsToShow); 

elements.unshift(elementsToMove); 

aber ich erhalte eine Fehlermeldung,

TypeError: elements.unshift is not a function

Wer weiß, wie ich dieses Problem beheben?

+1

'Elemente' ist wahrscheinlich kein Array, sondern ein Array-ähnliches. –

+0

Könnten Sie versuchen, die Anweisung 'unshift' durch' elements.splice (0, 0, elementsToMove) zu ersetzen; '? – trincot

Antwort

1

elements ist kein array, array Methoden anzuwenden. Verwenden Sie Array.from über array-like Sammlung.

The Array.from() method creates a new Array instance from an array-like or iterable object .

Array.from(elements).unshift(elementsToMove); 

Hinweis: Sehen Sie sich auch mit Polyfill wegen des Mangels an Browser compatibility

Oder[].slice.call könnte auch verwendet werden!

+0

mit eckigen. Wird einer von diesen tatsächlich das DOM aktualisieren? Das Erstellen eines neuen Arrays wird nicht funktionieren, da angular mit einer 2-Wege-Bindung arbeitet, also muss ich die Sammlung selbst ändern. – r3plica

+0

Ich kann die Dinge nicht mit '2-way binding' mit' new array' verbinden Lösung? – Rayon