да и чувствую что это можно изящно сделать средствами Angular
Для начала давайте проникнемся идеями декларативной разметки. Все эти ng-repeat, ng-hide и т.д. не выполняют никаких действий а просто реагируют на изменения состояния, а вы этими штуками описываете как оно должно реагировать.
Теперь к нашей задаче. У нас есть какой-то массив, который был задан в контроллере (еще попрошу вас избавиться от $scope в контроллерах и перейти на
controllerAs синтаксис). Что бы UI отреагировал на изменения состояния нам это состояние надо изменить. То есть по клику дернуть метод контроллера, который добавить элемент в массив. И все.