如何在没有$ watch的情况下访问角度指令链接功能中的参数?

时间:2017-08-05 13:51:08

标签: angularjs directive

<cat color="black"></cat>

app.directive('cat', function() {
   return {
      restrict: 'E',
      scope: {
         color: '='
      },
      link: function(scope) {
         alert(scope.color)
      }
   }
});

它会提醒未定义的消息。

我知道如果使用$ watch,这是可行的,但我不想要,因为参数可以相互依赖。

我想要的就像Vue的挂载功能或类似功能,我们可以直接用parmameter处理。

有没有人知道如何达到这样的目标?感谢

1 个答案:

答案 0 :(得分:0)

定义scope: {}时,您的属性有3种不同的选项。

  1. =。这将在指令中将属性设置为等于指令定义中指定的$scope属性,具有双向关系。即,给定color: '='<cat color="black">,父指令将查找属性$scope.black并尝试将该属性分配给color。对color的更改将更改black,反之亦然。
  2. @。这将在指令中将属性设置为等于指令中命名的变量的,采用单向关系。即<cat color="black">将立即设置color == "black",并在初始化时设置。{/ li>
  3. &。这将设置指令中的属性等于父级中的函数。即<cat color="black">将设置color == blackcolor()将执行black()
  4. 鉴于此,要实现您的期望,您有3个选择:

    • 在父级中创建$scope.black属性,并将其设置为字符串值。
    • 将您的值作为匿名字符串对象传递,即<cat color="'black'">
    • 将您的scope定义更改为color: '@'

    示例:http://plnkr.co/edit/byxhKtAewLgOrFpRU8dg?p=preview