考虑这个指令:
.directive('myDirective', function(httpRequestTracker) {
return {
restrict: 'EA',
scope: {
myvar: "=",
},
link: function($scope, elem, attrs) {
console.log($scope.myvar, attrs.myvar);
}
};
})
和这个JS控制台输出:
> undefined undefined //如果没有属性
>值value //如果attribute value =“value”
attr
函数的link
参数有什么用? $ scope有什么区别?
由于
答案 0 :(得分:2)
attrs
只是指令的原始属性列表
scope
更复杂,您可以使用三个不同的运算符来填充值:
=
在HTML中评估表达式,可能包含对象@
解释作为字符串传递的值。总是。&
可让您访问在父作用域答案 1 :(得分:1)
我知道我参加派对已经很晚了,但是为了后人,对我来说最重要的区别是在指令的定义对象(而不是链接函数签名)中使用scope: {...}
会在其中创建一个隔离范围指令元素,而完全省略scope
属性并从attrs
手动检索值则不会。在很多情况下,无论出于何种原因,您不想制作新的范围,但仍需要某些属性的值。