Пересчитать угловые директивы при изменении вида?

0

У меня есть div с элементами, которые полагаются на ng-class чтобы установить несколько свойств стиля (он вызывает функцию, которая возвращает строку классов). Обычно, когда что-то в div изменяется, Angular будет компрометировать все переменные ng-class для меня. Однако у меня есть кнопка за пределами этого div, которая просто добавляет к ней класс, чтобы изменить его ширину; когда это происходит, Angular не перепродает функции ng-class. Только после того, как я сделаю какое-то действие внутри этого div, он все вычислит для меня. Есть ли способ заставить Angular перекомпоновать после нажатия этой внешней кнопки?

  • 1
    Вы, вероятно, хотите прочитать это или это, если вы хотите узнать и понять, что происходит. Если нет, просто сделайте $scope.$digest() после нажатия этой кнопки.
  • 0
    Похоже, ваша кнопка не запускает дайджест. Использует ли она кнопку ngClick или событие jQuery для добавления класса?

1 ответ

0

Может работать, если вы передадите свои данные в директиву

var app = angular.module('myApp', []);
app.controller('myCtrl', function($scope) {
    
  
  
})
.directive('testDirective', function() {
  return {
    restrict: 'E',
    scope: {
      classData: '='
    },
    template: '<div ng-class="classData"> My directive </div>'
  };
});
.blue {
background: blue;
}
.green {
background: green;
}
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>

<div ng-app="myApp" ng-controller="myCtrl">

  <test-directive class-data="myClass"></test-directive>
  
  <input type="text" ng-model="myClass" />(green or blue)

</div>

Ещё вопросы

Сообщество Overcoder
Наверх
Меню