繁体   English   中英

AngularJS:指令监视属性表达式

[英]AngularJS : directive watch attribute expression

我想要一个指令来观察属性表达式的结果,例如:

<div scroll-if="test === selectedTest"></div>

这样它就可以对变化作出反应并滚动到特定元素。 我似乎在努力寻找如何观察这种表达方式的变化。

使用$watch

app.directive('scrollIf', function() {
  return {
    restrict: 'A',
    link: function(scope, element, attributes) {

      var actionScroll = function(newVal, oldVal) {
        if(newVal!==oldVal) {
          console.log("scrolling");
        }
      }

      scope.$watch(attributes.scrollIf, actionScroll);
    }
  }
});

$watch可以评估属性表达式scroll-if ,如果此表达式为true,则actionScroll侦听器将运行。

有必要添加条件newVal!==oldVal ,因为actionScroll总是第一次运行。 这在$ watch文档中有解释

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM