$ watch element.scrollHeight未触发

恩科恩

divtd标签内(在tr标签内)。div有需要自定义指令$watchscrollHeight元素:

<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-showscrollHeight当等于0ng-show等于false)。

我最初以为是因为我不得不用,$scope.$apply但我不知道该把它放在哪里...

索尔·雅各布森

您无法观看直接的对象引用(这是您要尝试的操作)。您可以监视当前范围的属性(通过提供属性名称作为字符串),也可以监视一个函数,该函数将返回新值。

将手表更改为:

scope.$watch(function(){ return element[0].scrollHeight }, function(){
    console.log('triggered');
});

另一方面,正如评论者指出的那样,您应该在DOM中使用破折号而不是驼峰式大小写来引用指令。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

element.on(“ click”,...)不会触发$ watch

来自分类Dev

textarea $ watch scrollheight和scrolltop不会触发更新

来自分类Dev

AngularJS:指令未触发$ watch

来自分类Dev

$ scope变量的更改未触发角$ watch

来自分类Dev

角度$ watch不会触发

来自分类Dev

StencilJS的Watch装饰器未使用对象数组触发

来自分类Dev

为什么$ watch中的监听器函数未触发?

来自分类Dev

获取触发$ watch的对象属性

来自分类Dev

$ watch不触发数据更改

来自分类Dev

角度:获取触发$ watch的原因

来自分类Dev

获取触发$ watch的对象属性

来自分类Dev

角度:获取触发$ watch的原因

来自分类Dev

$ rootsScope。$ watch没有被触发

来自分类Dev

Angular Watch不会因价值变化而触发

来自分类Dev

更改值时不触发AngularJS'$ watch'

来自分类Dev

$ scope。$ watch在jQuery onchange之后不触发?

来自分类Dev

属性更新时不会触发$ scope。$ watch

来自分类Dev

scope。$ watch不触发变量更改

来自分类Dev

指令隔离范围不触发$ watch

来自分类Dev

角度$ watch在初始化时触发?

来自分类Dev

指令内的AngularJS $ watch不触发

来自分类Dev

Grunt watch:不触发任何任务

来自分类Dev

属性更新时不会触发$ scope。$ watch

来自分类Dev

$ scope。$ watch在jQuery onchange之后不触发?

来自分类Dev

角$ watch不触发数组更改

来自分类Dev

如何通过Apple Watch触发与后端的通信?

来自分类Dev

Apple Watch Complication在后台未更新

来自分类Dev

Apple Watch上未显示的图像

来自分类Dev

gulp.watch()未运行后续任务