如果为false,则可以伪指令的范围创建新对象和函数。

时间:2018-08-29 17:38:29

标签: javascript angularjs angular-directive

对于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 个答案:

答案 0 :(得分:0)

通过class Parent: def method1(self, num): return num**2 def method2(self, list_size): return [self.method1(i) for i in range(list_size)] #List of squares class Child(Parent): def method1(self, num): #Overrides corresponding parent method return num**3 def method2(self, list_size): return super().method2(list_size) #Returns a list of cubes using child's method 1. ,伪指令接收与父对象相同的作用域对象。因此,您在执行以下操作时会覆盖父项上的函数:

scope: false

通常建议使用隔离范围,因为这样一来,您必须将数据显式传递到指令中,并且父级不能被覆盖(除非您竭尽所能)。