2013-07-24 26 views
19

beni bu işlevi uygulamak yardımcı olun. $scope’umda bir dizi öğe var. Şimdi, Öğe Ekle düğmesine tıkladığımda, yeni bir öğeyi bu dizinin ilk dizinine veya 0 dizinine itmek istiyorum. Şimdiden teşekkürler. http://jsfiddle.net/limeric29/7FH2e/

HTML:

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

JavaScript: :)

burada başlangıç ​​için bir çalışma jsFiddle var

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); 
    }; 
} 

cevap

26

Sorunu, push() yerine splice() kullanarak ve eklenecek dizi dizinine atayarak çözdüm.

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); 
    }; 
} 

İşte bunun için güncellenmiş keman bu. http://jsfiddle.net/limeric29/xvHNe/

+15

ayrıca 'unshift' kullanabilirsiniz. Bir diziye öğelerin ön seçiminde yaygın bir yoldur. –

23

Unshift işlevini kullanabilirsiniz.

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); 
}; 
} 
+0

Bu en iyi ve basit yaklaşım! –

0

bu deneyin:

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); 
    }; 
} 
6
$scope.data.unshift(item); 

One hattı, emin değilim diğerleri o kadar zor

0

Ben bu operasyonun gereksiz, düşündürdü neden. Bunu böyle çözebilirsin;

<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>