Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/461.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Can指令';如果为false,则为s范围创建新对象和函数。_Javascript_Angularjs_Angular Directive - Fatal编程技术网

Javascript Can指令';如果为false,则为s范围创建新对象和函数。

Javascript Can指令';如果为false,则为s范围创建新对象和函数。,javascript,angularjs,angular-directive,Javascript,Angularjs,Angular Directive,我对Angularjs中的指令有些陌生 在研究指令中的作用域时,我发现它们可以以三种形式声明,scope:false(共享作用域),scope:true(继承作用域),scope:{}(隔离作用域) 指令('smsDownloadSampleFile',函数(){ 返回{ 限制:'E', 范围:假, 模板:“”, 链接:功能(范围、元素、属性){ scope.getSampleFile=function(){ //log(“获取样本文件”); } DS=$scope; } } }) 所以我创建

我对Angularjs中的指令有些陌生

在研究指令中的作用域时,我发现它们可以以三种形式声明,
scope:false(共享作用域)
scope:true(继承作用域)
scope:{}(隔离作用域)

指令('smsDownloadSampleFile',函数(){
返回{
限制:'E',
范围:假,
模板:“”,
链接:功能(范围、元素、属性){
scope.getSampleFile=function(){
//log(“获取样本文件”);
}
DS=$scope;
}
}
})
所以我创建了这个指令,但是我无法在父范围中访问这个方法
getSampleFile
。据我所知,当
scope=false
时,它不会创建新的作用域,而是共享父作用域。如果是这样的话,为什么我不能在父范围中访问该方法


请帮助我澄清这个疑问并学习一些新知识。

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

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

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

您不是在重新定义函数吗?没有,先生。这是一个新函数。但是如果您与父函数共享相同的确切作用域,您不是在父函数上覆盖了该函数吗?如果你有
scope:true
你将创建一个新函数,父函数上的函数将仍然存在。无论如何,你最好使用独立的作用域,这样就不会对父函数上存在的内容进行任何假设(所有内容都会传入)。这就是我想知道的,先生,是否允许childscope在共享作用域时创建新对象或函数。?是的,先生,我知道我可以覆盖父作用域中已创建的对象和函数。但是我可以在chidlscope中创建新的对象和函数吗?这些对象和函数在父作用域中还没有出现,并且会反映在父作用域中吗?是的,它们是完全相同的对象(但您可能不应该这样做)
scope.getSampleFile=function() { ... }