任何人都可以解释从范围访问指令属性之间的区别,如:
scope: { someVar: '=' }
vs
link: function (scope, elem, attr, ctrl) {
attr.someVar
}
似乎两者都做了同样的事情。
答案 0 :(得分:2)
=或= attr - 设置本地范围属性与通过attr属性值定义的name的父范围属性之间的双向绑定...对parentModel的任何更改都将反映在localModel中,并且localModel将反映在parentModel中。
换句话说,这会在属性上创建一个监视,导致父范围或指令范围中的模型更改反映在另一个范围内。
引用该属性只返回一个字符串。因此,如果您有一个指令foo
,并且您的HTML看起来像
<foo some-var="bar"></foo>
在您的链接功能中,attr.someVar
将是字符串文字"bar"
。您可以随时通过调用bar
(或scope.$eval(attr.someVar)
,如果指令具有隔离范围)来评估范围中的scope.$parent.$eval(attr.someVar)
,但不是为您完成的。