Показать сообщение отдельно
  #25 (permalink)  
Старый 31.05.2013, 18:24
Профессор
Отправить личное сообщение для Shitbox2 Посмотреть профиль Найти все сообщения от Shitbox2
 
Регистрация: 04.10.2010
Сообщений: 571

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>

Последний раз редактировалось Shitbox2, 01.06.2013 в 02:53.
Ответить с цитированием