指令的角度属性

时间:2015-07-02 18:22:35

标签: angularjs angularjs-directive

在这种情况下,我不明白该属性正在做什么:

<div my-custom-directive="what does this do?"></div>

一个真实世界的例子:

 <div class="grid" ui-grid="gridOptionsSimple"> </div>

不是将属性传递给链接函数,因为你可能这样做:

<div my-custom-attribute="what does this do?" extra-attribute="123"></div>

看起来它在作用域上创建了一个属性。但就我而言,这就是我的意思。抱歉。这是一个初学者的问题。

2 个答案:

答案 0 :(得分:0)

以下是我认为您的问题的一个例子:

var app = angular.module('demo',[]);

app.directive('SampleQuilt', function() {
        return {
            restrict: 'E',
            scope:{ extraAttribute: "@", someText: "@"  }
            };
  });

通过向指令添加范围,我们创建了一个&#34; 隔离范围&#34;。使用此方法,范围可以通过3种方式捕获属性:

  1. @ 从DOM中捕获属性值作为字符串值。
  2. = 将该属性评估为父作用域的属性。
  3. & 将该属性评估为父作用域的方法。
  4. 您可以在此处详细了解:

    http://onehungrymind.com/angularjs-sticky-notes-pt-2-isolated-scope/

    关于 html

    • 案例(驼峰案例或pascal案例)意味着在角度指令中划线,因此{h}中sampleText需要用作sample-text

答案 1 :(得分:0)

ui-grid="gridOptionsSimple"的情况下,它将父范围的gridOptionsSimple值传递到UI-Grid的隔离范围。

如果你查看了ui-grid指令的源代码(这里:https://github.com/angular-ui/ng-grid/blob/v3.0.0-rc.22/src/js/core/directives/ui-grid.js#L196),你会看到该指令正在指定uiGrid(“ui-”网格中的蛇形)scope属性绑定到uiGrid属性('='只是'= uiGrid'的缩写)。

return {
  templateUrl: 'ui-grid/ui-grid',
  scope: {
    uiGrid: '='
  },
  replace: true,
  transclude: true,
  ...
};

这允许网格将所有选项和数据引用放入其自己的范围,而不会产生污垢和父控制器范围。