Пользовательская директива $ 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);
}
};
})