代码之家  ›  专栏  ›  技术社区  ›  Steve

如果为false,则可以创建新对象和函数。

  •  0
  • Steve  · 技术社区  · 6 年前

    我对Angularjs的指令有点陌生。

    在研究指令中的作用域时,我发现它们可以用三种形式声明, scope: false(shared scope) scope: true(inherited scope) scope: {}(isolated scope) .

    .directive('smsDownloadSampleFile',function() {
      return {
        restrict: 'E',
        scope: false,
        template: '<input type="button" class="btn cur-p btn-info pull-right" value="Download Sample Upload File" ng-click="getSampleFile()">',
        link: function(scope,element,attr) {
    
          scope.getSampleFile=function() {
            // console.log("Getting sample file on");
          }
    
          DS=$scope;
        }
      }
    })
    

    所以我创建了这个指令,但是我不能访问这个方法 getSampleFile scope=false 然后它不会创建新的作用域,而是共享父作用域。如果是这样,那么为什么我不能在父作用域中访问该方法。

    请帮我澄清这个疑问,学点新东西。

    1 回复  |  直到 6 年前
        1
  •  0
  •   Frank Modica    6 年前

    scope: false 指令接收与父对象完全相同的作用域对象。因此,在执行以下操作时,将覆盖父级上的函数:

    scope.getSampleFile=function() { ... }
    

    通常建议使用隔离作用域,因为这样必须显式地将数据传递到指令中,并且不能覆盖父级(除非您特意这样做)。