Javascript AngularJS:未在指令之间共享范围

Javascript AngularJS:未在指令之间共享范围,javascript,angularjs,angularjs-directive,angularjs-scope,Javascript,Angularjs,Angularjs Directive,Angularjs Scope,我在同一个标签上有两条指令,和设置提供一个模板,而模式创建一个独立的作用域: var-app=angular.module('app',[]); 应用程序指令('设置',函数(){ 返回{ 限制:'E', 模板:“设置”, 链接:功能(范围){ console.log('settings',scope.$id); } }; }); 应用指令('模态',函数(){ 返回{ 限制:“A”, 作用域:{}, 链接:功能(范围){ console.log('modal',scope.$id); } }

我在同一个标签上有两条指令,
<代码>设置提供一个模板,而
模式
创建一个独立的作用域:

var-app=angular.module('app',[]);
应用程序指令('设置',函数(){
返回{
限制:'E',
模板:“设置”,
链接:功能(范围){
console.log('settings',scope.$id);
}
};
});
应用指令('模态',函数(){
返回{
限制:“A”,
作用域:{},
链接:功能(范围){
console.log('modal',scope.$id);
}
};
});
但是,它们最终不会共享相同的作用域,如日志所示:

<settings modal="settings"></settings>

settings 002
modal 003 

设置002
模态003

这是为什么?

作用域:{}选项总是为指令创建一个独立的作用域,它不关心其他指令

app.directive('modal', function () {
    return {
        restrict: 'A',

        scope: false,

        link: function (scope) {
            console.log('modal', scope.$id);
        }
    };
});

作用域:false不会创建新的隔离作用域。我想让两个指令在它们之间工作,使用指令上的控制器,这样就可以在它们之间共享数据

直到版本1.2.0rc3,如果创建同级指令,则同级指令共享相同的隔离作用域

从1.2.0版开始,您不能(也不应该)从针对该隔离作用域编译的内容之外访问该隔离作用域。您不应该这样做,因为您正在创建两个指令之间的隐藏关系。通过
require
属性更好地使用指令的控制器需求,或者如果单例模式可以应用于您的用例,则通过注入的服务共享信息


它最终与另一个关于

OK的问题有着深刻的联系,但是我能不能让这两条指令共享相同的(独立的)范围?它们不能同时创建一个隔离的作用域。您可以将非隔离的指令ember设置为隔离的指令ember,或者创建一个隔离的包装器指令,然后将它们都保持为非隔离的。。。我不认为将非隔离/隔离指令作为一个元素混合使用是一个好主意我试图避免这种情况,可能是通过强制隔离指令排除非隔离指令,但我想我别无选择…
app.directive('modal', function () {
    return {
        restrict: 'A',

        scope: false,

        link: function (scope) {
            console.log('modal', scope.$id);
        }
    };
});