Как использовать несколько $index во вложенных ng-repeat для angular.js?
Несколько $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>
Что же касается вашего вопроса о покупке, то покупать и фиксировать выбранный товар нужно не по индексам гатегории и подкатегории (это абсолюто неправильно), а по айдишке товара.
Можно еще так.
Но если вдруг у Вас вложенность более двух циклов, лучше все таки изменить логику поведения.