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

Тоже с $watch играюсь. Хочу, чтобы он отслеживал изменение всего списка, но при этом показывал какой именно элемент изменился. Пока приходится делать отдельный $watch для каждого элемента, что не очень нравится.
<!doctype html>
<html ng-app="myApp">
  <head>
    <script src="http://code.angularjs.org/1.1.5/angular.min.js"></script>
    <script>
      angular.module('myApp',[])
 
      function TodoCtrl($scope) {
        $scope.todos = [
          {done: true, text: "foo"},
          {done: false, text: "bar"}
        ];
      }  
      function TodoItemCtrl($scope) {
        $scope.$watch('todos[$index]',
          function(newval, oldval, scope) {
            alert(
              "Изменен:" + $scope.todos[$scope.$index].text
            );
          }, true);
      }
    </script>
  </head>
  <body>
    <div ng-controller="TodoCtrl">
      <ul>
        <li ng-repeat="todo in todos" ng-controller="TodoItemCtrl">
          <input type="checkbox" ng-model="todo.done">
          {{todo.text}}
        </li>
      </ul>
    </div>
  </body>
</html>
Ответить с цитированием