$ angularjs $ watch не запускается в директиве - PullRequest
0 голосов
/ 10 мая 2019

Пользовательская директива $ watch не запускается, когда я использую angularjs 1.3 и выше.он работает с angularjs 1.2.

Потратил много часов, перепробовал почти все, но не работает

пример кода:

<ul class="dropdown-list-container" ng-show="isStateOpen" flexcroll="dynamic">
 <li ng-click="selectState(schoolPage.defaultState)">{schoolPage.defaultState.stateName}}</li>
</ul>

$ часы запускаются самые первыевремя после этого не вызывается newVal и oldVal не определены.

пользовательские директивы:

directive('flexcroll', function ($timeout) {
    return {
        restrict: 'A',
        link: function (scope, lElement, attr) {
            var parentHeight = lElement.height();
            var child = lElement.children(':eq(0)');

            scope.childHeight= function(){              
                return child.height();
            };                  
            scope.$watch(scope.childHeight, function(newVal, oldVal){
                if(attr.flexcroll=='dynamic'){
                var maxHeight = parseInt(lElement.css('max-height'));
                var childNewHeight = newVal;
                if(childNewHeight > maxHeight){
                    lElement.css({'height': maxHeight+"px"});
                } else {
                    lElement.css({'height': (childNewHeight+5)+"px"});
                }
                }
            },true);

        }
    };
})

1 Ответ

0 голосов
/ 13 мая 2019

Попробуйте это scope.$parent.$apply()

Выполнение цикла дайджеста внутри может помочь.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...