@schurin
Люблю катать с гор, особенно на санках

Как поймать значение false в атрибуте директивы?

Добрый день!
При включении режима истории в приложение, есть необходимость проверить всё ли влезло в экран и если нет, исправить сложившуюся ситуацию, при выходе из режима всё вернуть на место
Но я не пойму почему вотчер в директиве ловит только true

<div class="history-controls" overflow-header="mode === 'history'" ng-if="mode === 'history'"></div>


define(['app'], function(app) {
	app.directive('overflowHeader', function() {
		return {
			restrict: 'A',
			link: function($scope, element, attrs) {

				$scope.$watch('overflowHeader', function(e){
					console.log(element)
				})

				$scope.$watch(!('overflowHeader'), function(e){
					console.log(element)
				})


			}
		}
	});
});

Если выражение в атрибуте true срабатывают оба watch'а
Как узнать что значение выражения атрибута изменило значение на false?
  • Вопрос задан
  • 142 просмотра
Пригласить эксперта
Ответы на вопрос 2
AlexXYZ
@AlexXYZ
O Keep Clear O
Неправильно передавать в $watch конструкцию !('overflowHeader'). Первый параметр должен разрешать имя переменной в контексте, а у вас написано отрицание строки. Соответственно в контексте он такого найти не может.

$scope.$watch('overflowHeader', function(e){
          if(e==true){
          }
          if(e==false){
          }
        })
Ответ написан
miraage
@miraage
Старый прогер
Извините, но это полный facepalm.
Если у Вас не совпадает условие ngIf - блока не будет вообще = директива не вызовется.
То есть, у вас ВСЕГДА будет значение true.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы