请帮我实现这个功能。我的$scope
中有一系列项目。现在,当我单击Add Item按钮时,我想将一个新项目推送到该数组的第一个索引或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);
};
}
答案 0 :(得分:30)
您可以使用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);
};
}
答案 1 :(得分:28)
通过使用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/ 强>
答案 2 :(得分:14)
$scope.data.unshift(item);
一条线,不确定其他人为何如此困难
答案 3 :(得分: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);
};
}
答案 4 :(得分: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>