2015-03-10 2 views
0

У меня есть страница, которая использует ngRepeat для коллекции объектов в ресурсе. Когда какое-либо поле изменяется на объекте, ресурс отправляется на сервер, и сбор объектов возвращается сервером снова и обновляется на модели. Это заставляет ngRepeat повторно отображать и фокусироваться, чтобы быть потерянным в текущем поле редактирования. Есть ли способ проверить ресурс, изменилось ли что-либо между данными, отправленными на сервер, и которые были возвращены, и только обновить модель, если она отличается? АтрибутУгловое ngRepeat на ресурсе. Фокус потерян при обновлении ресурса

ответ

0

Использование "трэк". Если элементы ресурсов имеют определенный идентификатор, было бы

ng-repeat="item in resource.items track by item.id" 

Это предотвратит Угловым от перерисовки элементов он уже оказанными, и должно сохранять состояние вашего DOM.

+0

Мы уже используем это. Извините, я не опубликовал код, это довольно сложная настройка. Спасибо за ваше предложение. – Felix

0

добавить набор фокус-если = ""

directive('setFocusIf', function ($timeout) { 
    return { 
     link: function ($scope, $element, $attr) { 
      $scope.$watch($attr.setFocusIf, function (value) { 
       if (value) { 
        $timeout(function() { 
         // We must reevaluate the value in case it was changed by a subsequent 
         // watch handler in the digest. 
         if ($scope.$eval($attr.setFocusIf)) { 
          $element[0].focus(); 
         } 
        }, 0, false); 
       } 
      }); 
     } 
    } 
}) 
0

Чтобы устранить эту проблему, мы можем решить обернуть ресурс в нашей собственной службе. Наш сервис будет выполнять различие вручную и обновлять модель только в том случае, если что-то изменилось.

Смежные вопросы