【问题标题】:Custom directive with watcher only fires once. Does not watch带有观察者的自定义指令只触发一次。不看
【发布时间】:2015-01-21 05:59:41
【问题描述】:

我正在尝试使用自定义指令“激活”来触发动画,我在这里将其用作属性,partials/test.html

<div activate="{{cardTapped}}" >

我在 js/app.js 中的应用定义之后定义指令

myApp.directive('activate', function ($animate) {
  return function(scope, element, attrs) {
    scope.$watch(attrs.activate,function(newValue){
      console.log('fire');
      if(newValue){
        $animate.addClass(element, "full");
      }
      else{
        $animate.removeClass(element, "full");
      }
    },true);
  };
});

但是,$watch 仅在页面加载时触发。当cardTapped 更改值时,没有任何记录。我在这里尝试了几种参数变体无济于事,我已经看到了十几个类似的问题,但到目前为止我还没有找到解决方案

有什么想法吗?

【问题讨论】:

  • 试试attrs.$observe

标签: angularjs angularjs-directive watch


【解决方案1】:

问题是你这样写:activate="{{cardTapped}}",而它应该是activate="cardTapped"

当你想使用观察者时,让它观察一个变量,而不是一个字符串。

JS Fiddle

【讨论】:

  • 如果您试图观察属性的变化怎么办?这不是解决方案...我希望它是一个字符串,并观察属性,而不是变量。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-09-23
  • 2011-07-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-10-18
相关资源
最近更新 更多