bagerman: пишите интерактивные приложения, где много элементов, сперва будет каша, потом начнете делать рефакторинг. Меньше работы с данными в контроллерах, больше использования фабрик и сервисов. Соблюдайте рекомендуемые style-guides на github'e.
Лучше такие операции выполнять не в шаблоне, а в контроллере, путём выполнения функции, например такой: setCount(1) & setCount(-1), в самой функции выполнять операцию сложения передаваемго аргумента и если результат меньше нуля - обнулять.
faragly: если вы используете контроллер без vm, то вотчер ставится прямо на переменную
$scope.$watch('object', function(newObj, oldObj){
// oldObj.someValue
}, true); // true т.к. наблюдение за объектом
Если у вас используется Controller as, то если в контроллере например this указан как var vm = this, вотчер ставится $scope.$watch('vm.object'…
Андрей Галкин: закрытие всего браузера прерывает сессию, и если у вас в cookies нет ни единого её идентификатора, то восстановить оборванную сессию не представляется возможным.