AngularJS push item для первого или 0 индекса массива $scope
Пожалуйста, помогите мне реализовать эту функцию. У меня есть массив элементов в моем $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);
};
}
Ответы
Ответ 1
Решил мою проблему, используя 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
Вы можете использовать функцию 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);
};
}
Ответ 3
$scope.data.unshift(item);
Одна строка, не уверенный, почему другие сделали это настолько трудным
Ответ 4
Попробуйте следующее:
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);
};
}
Ответ 5
Думаю, не нужна эта операция. Вы можете решить это следующим образом:
<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>