Я знаю, что это было задано много раз, но любое открытое решение, похоже, работает для меня. У меня этот HTML-код
<body ng-controller="mainCtrl">
<h4>{{size}}</h4>
<input type="range" ng-model="size" min="1" max="100" />
<div font-scale="{{size}}">I'm some text</div>
</body>
Вход работает, значение изменяется и фактически привязывается к {{size}} правильно.
Тогда у меня есть моя директива:
MyApp.controller('mainCtrl', function($scope) {
$scope.size = 30;
});
MyApp.directive('fontScale', function(){
return {
link: function(scope, el, attrs){
scope.$watch(attrs['fontScale'], function(newVal){
console.log('testing');
el.css('font-size', newVal+'px');
});
}
}
});
"Тестирование" отображается в консоли только один раз, когда страница загружается, но при изменении значения через ползунок это не так. Но он правильно связывает значение {{size}}.
Добавление "TRUE" в качестве третьего параметра не работает, и, с любопытством, учебник, изучающий это, работает с одним и тем же кодом!
Что мне не хватает?
Если свойство размера доступно в области ваших указаний (как указано в вашем комментарии). Затем должно работать следующее:
scope.$watch('size', function(newVal) {
el.css('font-size', newVal+'px');
}