Я использую Angular для создания приложения со списком покупок. У меня есть два предварительно созданных списка, каждый из которых содержит два и три предварительно созданных элемента соответственно для целей тестирования. Конечно, в конечном итоге не будет предварительно созданных элементов или списков. Все должно динамически добавляться пользователем. Мне удалось заставить работать кнопку «Добавить элемент», чтобы вы могли добавлять новый элемент в каждый список.
Вот ручка, с которой можно поэкспериментировать: http://codepen.io/anon/pen/WraZEv
<body ng-controller="notepadController as notepad">
<header ng-repeat="list in notepad.lists">
<div>Delete list</div>
<h1>{{list.name}}</h1>
</header>
<div ng-repeat="list in notepad.lists" class="shoppingList" ng-controller="ItemController as itemCtrl">
<ul>
<li ng-repeat="item in list.items">
<label>
<input type="checkbox" ng-model="item.checked">
{{item.name}}
</label>
<form name="removeItemForm" ng-submit="itemCtrl.removeItem(list)">
<input type="submit" value="Remove Item">
</form>
</li>
</ul>
<form name="itemForm" ng-submit="itemCtrl.addItem(list)">
<input type="text" ng-model="itemCtrl.item.name">
<input type="submit" value="Add Item">
</form>
</div>
</body>
Javascript это:
(function(){
var app = angular.module('notepadApp', []);
var shoppingLists = [
{
name: 'groceries',
items: [
{
name: 'milk',
checked: false
},
{
name: 'eggs',
checked: false
}
]
},
{
name: 'cvs',
items: [
{
name: 'pills',
checked: false
},
{
name: 'cotton balls',
checked: false
},
{
name: 'cigs',
checked: false
}
]
}
];
app.controller('notepadController', function(){
this.lists = shoppingLists;
});
app.controller('ItemController', function(){
this.item = {};
// add new item to a shopping list
this.addItem = function(list){
list.items.push(this.item);
this.item = {};
};
// remove an item from a shopping list
this.removeItem = function(list){
var listOfItems = [];
var i;
for (i = 0; i < list.items.length; i++){
list.items.splice(list.items[i,1]);
}
};
});
})();
Кнопка «Удалить элемент» удаляет все элементы из списка, а не элемент, с которым он связан. Я понимаю, почему он это делает, но я не могу понять, как получить индекс элемента, который нужно удалить, и чтобы кнопка «Удалить элемент» удаляла только этот элемент.
.splice
потребуется 2 аргумента. Первыйindex
второйnumber of items to be removed
- person Rayon   schedule 06.02.2016