AngularJS:指令作用域中的根作用域

AngularJS:指令作用域中的根作用域,angularjs,angularjs-scope,Angularjs,Angularjs Scope,例如,我有指令 App.directive('module',function($compile) { 返回{ 替换:正确, 限制:'E', 链接:功能(范围、IELENT、iAttrs) { scope.localName='1'; }, 模板:“{name}}-{{localName}}”, } }); 应用程序运行时功能: App.run(函数($rootScope,$location) { $rootScope.name=“测试”; } 因此,通过这种方式,

例如,我有指令

App.directive('module',function($compile)
{   
返回{
替换:正确,
限制:'E',
链接:功能(范围、IELENT、iAttrs)
{   
scope.localName='1';
},
模板:“{name}}-{{localName}}”,
}       
});
应用程序运行时功能:

App.run(函数($rootScope,$location)
{
$rootScope.name=“测试”;
}
因此,通过这种方式,指令的作用域将与所有指令相同,但此作用域将有权访问$rootScope


但如果我将创建一个单独的范围:

App.directive('module',function()
{   
返回{
替换:正确,
限制:'E',
链接:功能(范围、IELENT、iAttrs)
{   
scope.localName='1';
},
模板:“{name}}-{{localName}}”,
作用域:{}
}       
});
作用域会有所不同,但它们可以访问$rootScope

所以我需要隔离每个指令的作用域,但我需要这个作用域来访问$rootScope


你能帮我吗?

范围:true

不是孤立的,不是共享的,而是每个指令实例一个新的协议继承的作用域

您可以使用
console.log(scope.$id)
记录作用域的id。使用
scope:{}
您将得到,例如003和004。使用
scope:false
(或无),作用域是共享的,例如,两者都有002。 使用
scope:true
时,它们具有不同的id,但可以读取
$rootScope

在实时示例中,您可以在局部变量
localName
中看到作用域ID。我将伪指令
mydir
命名为
module
。将模块命名为指令看起来很奇怪


拯救我的生命我不知道这件事会引起这么多问题