Я изучаю, как управлять состоянием приложения через упражнение списка покупок. За инструкциями, у меня есть массив внутри объекта, где хранятся все детали я добавляю:Как удалить определенный элемент из массива, который находится внутри объекта?
var state = {
items: []
};
Чтобы изменить state
Я использую эту функцию:
var addItem = function(state, item) {
state.items.push(item);
};
, который называется позже с помощью прослушивателя событий (и добавляют к DOM через renderList
, здесь не показано):
$('#js-shopping-list-form').submit(function(event){
event.preventDefault();
addItem(state, $('#shopping-list-entry').val());
renderList(state, $('.shopping-list'));
});
Как я могу удалить определенный элемент из массива внутри моего state
объекта? По сути, я хочу изменить приведенную выше последовательность, когда пользователь нажимает на <button class="shopping-item-delete">
.
Вот демо окончательного решения: https://thinkful-ed.github.io/shopping-list-solution/
HTML
<body>
<div class="container">
<form id="js-shopping-list-form">
<label for="shopping-list-entry">Add an item</label>
<input type="text" name="shopping-list-entry" id="shopping-list-entry" placeholder="e.g., broccoli">
<button type="submit">Add item</button>
</form>
<ul class="shopping-list">
<li>
<span class="shopping-item">apples</span>
<div class="shopping-item-controls">
<button class="shopping-item-toggle">
<span class="button-label">check</span>
</button>
<button class="shopping-item-delete">
<span class="button-label">delete</span>
</button>
</div>
</li>
</ul>
</div>
<script
src="https://code.jquery.com/jquery-3.1.1.min.js"
integrity="sha256-hVVnYaiADRTO2PzUGmuLJr8BLUSjGIZsDYGmIJLv2b8="
crossorigin="anonymous"></script>
<script type="text/javascript" src="app.js"></script>
</body>
Конечно, мы можем отпустить IE 7 и 8 не так ли? это почти 2017! lol, anyways polyfill можно найти здесь https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/indexOf#Polyfill –
@ Andy, это отлично работает! Спасибо. –