AngularJS нажимает элемент на первый или 0 индекс массива $scope

Помогите пожалуйста реализовать эту функцию. У меня есть массив элементов в моем $scope. Теперь, когда я нажимаю кнопку «Добавить элемент», я хочу добавить новый элемент в первый индекс или нулевой индекс этого массива. Заранее спасибо. :)

Вот рабочий jsFiddle для начала: http://jsfiddle.net/limeric29/7FH2e/

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

person sharic19    schedule 24.07.2013    source источник


Ответы (5)


Вы можете использовать функцию unshift.

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);
};
}
person Mit Mehta    schedule 17.02.2015
comment
Это самый лучший и простой подход! - person João Martins; 04.02.2016

Решил мою проблему, используя splice() вместо push() и назначив индекс массива для вставки.

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

Вот обновленная скрипка для этого. http://jsfiddle.net/limeric29/xvHNe/

person sharic19    schedule 24.07.2013
comment
вы также можете использовать unshift. это распространенный способ добавления элементов в массив. - person Eduard Gamonal; 24.07.2013

$scope.data.unshift(item);

Одна линия, не знаю, почему другие так усложнили

person WtFudgE    schedule 28.09.2016

Попробуй это:

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);
    };
}
person pal    schedule 07.07.2015

Думаю, не нужна эта операция. Вы можете решить это так;

<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>
person Abdurrahim Akpınar    schedule 09.08.2017