0

考虑到这个指令:

.directive('myDirective', function(httpRequestTracker) {
    return {
        restrict: 'EA',
        scope: {
            myvar: "=",
        },
        link: function($scope, elem, attrs) {
            console.log($scope.myvar, attrs.myvar);
        }
    };
})

和这个 JS 控制台输出:

> undefined undefined // 如果没有属性

> value value // 如果属性 value = "value"

函数的attr参数有什么用link?与 $scope 有什么区别?

谢谢

4

2 回答 2

2

attrs只是指令上的原始属性列表
scope更复杂,您可以使用三个不同的运算符来填充它的值:

  • =计算 HTML 中的表达式,并且可能包含对象
  • @解释作为字符串传递的值。总是。
  • &使您可以访问在父范围上定义的函数
于 2014-06-13T15:43:13.057 回答
1

我知道我参加聚会已经很晚了,但是为了后代,对我来说最重要的区别是scope: {...}在指令的定义对象(而不是链接函数签名)中使用会在指令元素内创建一个隔离范围,而省略scope属性完全并手动从不检索值attrs。在很多情况下,无论出于何种原因,您都不想创建一个新范围,但您仍然需要某个属性的值。

于 2016-04-19T17:05:12.047 回答