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