26

请帮我实现这个功能。我的$scope. 现在,当我单击“添加项目”按钮时,我想将一个新项目推送到该数组的第一个索引或 0 索引。提前致谢。:)

这是一个有效的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);
    };
}
4

5 回答 5

31

您可以使用 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);
};
}
于 2015-02-17T00:20:56.547 回答
29

通过使用 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/

于 2013-07-24T06:52:22.140 回答
18
$scope.data.unshift(item);

一行,不知道为什么其他的让它如此困难

于 2016-09-28T15:33:17.160 回答
0

我想,没必要这个操作。你可以这样解决它;

<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>
于 2017-08-09T09:12:33.887 回答
0

尝试这个:

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);
    };
}
于 2015-07-07T04:39:23.873 回答