Задать вопрос
@vetalmatitskiy
testing engineer

Как использовать несколько $index во вложенных ng-repeat для angular.js?

Доброго дня, уважаемые гуру веб-разработки
пытаюсь написать небольшое приложение на angular для интернет-магазина.сейчас в приложении одна директива ng-repeat проходит по всем товарам в категории и когда пользователь нажимает кнопку купить индекс товара - $index отсылается в контролер и в модели фиксируется факт покупки. хочу чтобы в приложении была возможность разбивки товаров на категории с возможностью отсылки в контролер номера категории и номера товара в категории, но не знаю возможно ли в ангуляре получить оба индекса в разные переменные. буду благодарен за Ваши подсказки
  • Вопрос задан
  • 1862 просмотра
Подписаться 1 Оценить Комментировать
Пригласить эксперта
Ответы на вопрос 3
mudrick
@mudrick
Máximo progreso hemos alcanzado en minimo seso.
Несколько $index'ов делаются так и никак иначе (всё остальное это какой-то ужас отвратный):

<ul>
    <li ng-repeat="(i, items) in collection">
        <ul>
            <li ng-repeat="(j, item) in items">
                {{i}} — {{j}}
                Чекбокс: <input type="checkbox" name="field[{{i}}][{{j}}]">
                <button ng-click="doSomething(i, j)">Клацнуть</button>
                <button ng-click="buyItem(item.id)">Купить</button>
            </li>
        </ul>
    </li>
</ul>


Что же касается вашего вопроса о покупке, то покупать и фиксировать выбранный товар нужно не по индексам гатегории и подкатегории (это абсолюто неправильно), а по айдишке товара.
Ответ написан
AMar4enko
@AMar4enko
Попробуйте так
<div ng-repeat="item in level1" ng-init="level1Index = $index">
  <div ng-repeat="item in level2" ng-init="level2Index = $index">
    {{level1Index}} - {{level2Index}}
  </div>
</div>
Ответ написан
DigitalSmile
@DigitalSmile
http://brainstorage.me/digitalsmile
Можно еще так.
Но если вдруг у Вас вложенность более двух циклов, лучше все таки изменить логику поведения.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы