【问题标题】:AngularJS : directive watch attribute expressionAngularJS:指令监视属性表达式
【发布时间】:2015-06-01 11:36:36
【问题描述】:

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

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

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

【问题讨论】:

标签: javascript angularjs angularjs-directive watch


【解决方案1】:

使用$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,如果该表达式为真,actionScroll 侦听器将运行。

需要添加条件newVal!==oldVal,因为actionScroll总是第一次运行。这在$watch documentation中进行了解释

【讨论】:

  • newVal!=oldVal 应该是newVal !== oldVal
猜你喜欢
  • 1970-01-01
  • 2018-02-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多