对于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
时,它不会创建新的作用域,而是共享父作用域。如果是这样,为什么我不能在父范围中访问该方法。
请帮助我消除这一疑问并学习新知识。
答案 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
通常建议使用隔离范围,因为这样一来,您必须将数据显式传递到指令中,并且父级不能被覆盖(除非您竭尽所能)。