Как получить данные из элемента в AngularJs?
вам нужно реализовать директиву, которая будет отвечать за drag'n'drop объектов, и внутри организовать калбэки, которые можно задавать через scope. (например что-то типа on-drop). Для удобства настройки можно сделать несколько директив, и одну главную (читать про require).
Работать с элементами можно только в директивах, но директивы не должны ничего знать о вашей бизнес логике. То есть если у вас появляются конструкции вида angular.element(garage).scope() то это повод задуматься.
Должно получиться что-то такое:<ul>
<li data-ng-repeat="car in Model.cars" data-draggable="car" data-draggable-item="car">{{car.modelName}}</li>
</ul>
<ul>
    <li data-ng-repeat="garage in Model.garages"  data-droppable="car" data-on-drop="doSomething">{{garage.name}}</li>
</ul>
атрибуты data-draggable и data-droppable будут отмечены тегами, что бы указать какие объекты можно тягать куда. Для вашей задачи можно и без этого.// controller
$scope.doSomething = function (car, garage) {
    // ставим машинку в гараж, убираем ее из списка если хотим, или что-то еще...
    // контроллер в этом случае вообще ничего не знает о drag n drop, 
    // только о том что что-то нужно сделать с данными.
};
Кто мешает внутри moveCarToGarage(car, garage), пробежаться циклом по массиву данных и обновить совпадающие значения?