#angularjs #controller
#angularjs #контроллер
Вопрос:
Если кто-нибудь может помочь, я был бы очень благодарен. Я довольно новичок в AngularJS и пытаюсь его изучить. Проблема, с которой я столкнулся, заключается в том, что один из контроллеров не вызывается при нажатии купленной кнопки
<div class="col-md-6" ng-controller="AlreadyBoughtController as Items">
<h2>Already Bought:</h2>
<ul ng-repeat="bought in Items.ItemsBought track by $index">
<li>Bought {{bought.quantity}} {{bought.name}}</li>
</ul>
<div class="emptyMessage" ng-if="Items.ItemsBought.length === 0">Nothing bought yet.</div>
</div>.
Пожалуйста, посмотрите полный код с app.js файл на plunker:
http://plnkr.co/edit/8wKY7PPZ6mINsFGCJQfP?p=preview
Комментарии:
1. Вы можете отладить это, поместив
{{ Items }}
где-нибудь под тем, где вы определяетеAlreadyBoughtController as Items
— вы увидите, что CTRL на самом деле загружается нормально, но добавление «купленного» элемента отображается как null. embed.plnkr.co/Mhoa50ClNcbOPbC1D2Py В вашей реализации возникает ошибка при добавлении купленных товаров.2. Да, я вижу это, но мне нужно, чтобы кто-нибудь объяснил мне, почему он отображается как null и что я делаю неправильно. Спасибо
Ответ №1:
Это потому, что вы на самом деле никогда не передавали индекс купленного вами товара.
<li>Buy {{item.quantity}} {{item.name}} <button class="btn btn-default" ng-click="itemsToBuy.boughtItems($index);"><span class="glyphicon glyphicon-ok"></span> Bought</button></li>
Передайте $index
вашей функции: ng-click="itemsToBuy.boughtItems($index);
Взгляните на исправленный сбой.
Комментарии:
1. Аникет, большое тебе спасибо. Я знал, что это должно быть что-то простое, но я не мог понять. Еще раз большое спасибо.
2. Ничто не говорит спасибо лучше, чем принятый ответ / одобрение. 🙂