我div
在td
标签内(在tr
标签内)。这div
有需要自定义指令$watch
的scrollHeight
元素:
<tr ng-show="showRow">
<td>
<div my-custom-directive>My very long text</div>
</td>
</tr>
对于指令:
appDrct.directive('myCustomDirective', [function() {
return {
restrict : 'A',
compile : function(elem, attr, linker) {
return function(scope, element, attributes) {
scope.$watch(element[0].scrollHeight, function(){
console.log('triggered');
})
}
}
}
}])
的showRow
变量通过改变ng-click
。
问题是,$watch
永远不会触发(除第一次),即使scrollHeight
改变因ng-show
(scrollHeight
当等于0ng-show
等于false
)。
我最初以为是因为我不得不用,$scope.$apply
但我不知道该把它放在哪里...
您无法观看直接的对象引用(这是您要尝试的操作)。您可以监视当前范围的属性(通过提供属性名称作为字符串),也可以监视一个函数,该函数将返回新值。
将手表更改为:
scope.$watch(function(){ return element[0].scrollHeight }, function(){
console.log('triggered');
});
另一方面,正如评论者指出的那样,您应该在DOM中使用破折号而不是驼峰式大小写来引用指令。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句