“@”在角度指令中做了什么?

时间:2014-12-10 17:03:19

标签: angularjs

建立一个角度指令,并且无法找到" @"装置..

.directive('mydirective', function() 
{
   return {
      scope: {
         test: "@"
      }
   }
}

3 个答案:

答案 0 :(得分:3)

这意味着此属性将具有属性中指示的值。

在你的情况下:

<mydirective test="hello">
</mydirective>

该指令实例的scope.test值将为“hello”。

.directive('mydirective', function() 
{
   return {
      scope: {
         test: "@"
      },
      link: function(scope, element, attrs, tabsCtrl) {
          // scope.test == "hello"
      }
   }
}

答案 1 :(得分:1)

这是docs所说的意思。

  

@或@attr - 将本地范围属性绑定到DOM的值   属性。由于DOM属性,结果总是一个字符串   字符串。如果未指定attr名称,则属性名称为   假设与本地名称相同。范围的给定和小部件定义:{localName:'@ myAttr'},   那么widget作用域属性localName将反映插值   hello {{name}}的值。由于名称属性发生了变化,因此   小部件范围上的localName属性。该名称是从   父范围(不是组件范围)。

因此它与=类似,但它不是绑定到来自不同范围的值,而是绑定到DOM中的属性值。

答案 2 :(得分:1)

在angular中,我们可以通过三种方式将值绑定到指令。

1。)=

2。)&amp;

3。)@

&#34; =&#34;用于双向绑定。我换了控制器。反映在指令和反向。

&#34;&安培;&#34;用于表达式。应该用于传递函数。

&#34; @&#34;用于单向绑定。这是作为字符串接收的。但无论如何你可以解析得到对象。所以发送单向绑定数据很好。 (在指令中完成的更改不会反映在控制器中)

通过属性发送数据的其他方式。你可以通过&#34; attr&#34;链接函数中的参数。