it-swarm.com.de

AngularJS Element zum ersten oder Index des $ scope-Arrays verschieben

Bitte helfen Sie mir, diese Funktion zu implementieren. Ich habe eine Reihe von Artikeln in meinem $scope. Wenn ich jetzt auf die Schaltfläche Element hinzufügen klicke, möchte ich ein neues Element an den ersten Index oder 0-Index dieses Arrays verschieben. Danke im Voraus. :)

Hier ist ein funktionierendes jsFiddle, um mit http://jsfiddle.net/limeric29/7FH2e/ zu beginnen.

HTML:

<div ng-controller="Ctrl">
    {{data}}<br/>
    <input type="button" ng-click="addItem()" value="Add Item" />
</div>

JavaScript:

function Ctrl($scope) {
    $scope.data = [
    new String('Item 5'), new String('Item 4'), new String('Item 3'), new String('Item 2'), new String('Item 1')];

    $scope.addItem = function () {
        var c = $scope.data.length + 1;
        var item = new String('Item ' + c)
        $scope.data.Push(item);
    };
}
21
sharic19

Mein Problem wurde gelöst, indem Splice () anstelle von Push () verwendet wurde und welchem ​​Array-Index einzufügen war.

HTML:

<div ng-controller="Ctrl">
    <pre>{{data}}</pre><br/>
    <input type="button" ng-click="addItem()" value="Add Item" />
</div>

Javascript:

function Ctrl($scope) {
    $scope.data = [
    new String('Item 4'), new String('Item 3'), new String('Item 2'), new String('Item 1')];

    $scope.addItem = function () {
        var c = $scope.data.length + 1;
        var item = new String('Item ' + c)
        $scope.data.splice(0, 0, item);
    };
}

Hier ist die aktualisierte Geige. http://jsfiddle.net/limeric29/xvHNe/

27
sharic19

Sie können die Unshift-Funktion verwenden. 

function Ctrl($scope) {
$scope.data = [
new String('Item 5'), new String('Item 4'), new String('Item 3'), new String('Item 2'), new String('Item 1')];

$scope.addItem = function () {
    var item = new String('Item ' + c)
    $scope.data.unshift(item);
};
}
28
Mit Mehta
$scope.data.unshift(item);

Eine Zeile, nicht sicher, warum die anderen es so schwierig gemacht haben

14
WtFudgE

Ich denke, diese Operation ist nicht notwendig. Sie können es so lösen;

<div ng-controller="Ctrl">
    <!-- "$index" is short parameter, "true" statment is reverse parameter -->
    {{data | reverse:$index:true}}<br/>
    <input type="button" ng-click="addItem()" value="Add Item" />
</div>
0

Versuche dies:

function Ctrl($scope) {
    $scope.data = [
    new String('Item 4'), new String('Item 3'), new String('Item 2'), new String('Item 1')];

    $scope.addItem = function () {
        var c = $scope.data.length + 1;
        var item = new String('Item ' + c);
        $scope.data.Push(item);
    };
}
0
pal