DjDiablo, клёво! Изучаю твои примеры :-) В том, где experement1, experement2, demo «reset» ничего не сбрасывает, кстати.
Дополнил прошлый пример про $watch. Показал наследование областей видимости
<!doctype html>
<html ng-app>
<head>
<script src="http://code.angularjs.org/1.1.5/angular.min.js"></script>
<script language="javascript" type="text/javascript">
function UserListCtrl($scope) {
$scope.users = [{name: 'Oleg', age: 27},
{name: 'Diana', age: 25},
{name: 'Bob', age: 30}];
$scope.last = {name: 'нет'};
}
function UserItemCtrl($scope) {
$scope.$watch('users[$index]', function(newValue, oldValue, scope) {
if (newValue === oldValue) return;
$scope.last.name = $scope.users[$scope.$index].name;
//Мы используем параметр 'name' из объекта 'last', чтобы Angular, не найдя 'last'
//в текущей области видимости, стал бы искать в родительской (где объявлен объект 'last')
//Если бы мы задавали 'name' напрямую ($scope.name = 'нет'), то Angular просто создал бы
//такой же параметр со значением $scope.users[$scope.$index].name в дочерней области видимости,
//перекрыв им значение из родительской области
}, true);
}
</script>
</head>
<body>
<div ng-app ng-controller="UserListCtrl">
<ul>
<li ng-repeat="user in users" ng-controller="UserItemCtrl" ng-model="users">
<input ng-model="user.name"/>
</li>
</ul>
<div>
Последнее изменение: {{last.name}}
</div>
</div>
</body>
</html>