Javascript 我可以选择在指令中创建新范围吗?

Javascript 我可以选择在指令中创建新范围吗?,javascript,angularjs,scope,Javascript,Angularjs,Scope,我在重新使用一个指令时遇到了问题,一些标记已经有了第二个指令,用new或{}创建了一个新的作用域,而有些没有。 当我试图创建一个新的作用域时,angular抛出了一个错误,如果第二个指令已经创建了一个新的作用域 我想知道我是否可以选择创建一个作用域 我还尝试在链接函数或控制器函数中创建一个新范围,并用新创建的范围替换当前范围,如下所示: scope = scope.$new(); 但在模板中使用此作用域时也不成功。是否尝试调用作用域。$new(true)或作用域。$new(false),具体取

我在重新使用一个指令时遇到了问题,一些标记已经有了第二个指令,用new或{}创建了一个新的作用域,而有些没有。 当我试图创建一个新的作用域时,angular抛出了一个错误,如果第二个指令已经创建了一个新的作用域

我想知道我是否可以选择创建一个作用域

我还尝试在链接函数或控制器函数中创建一个新范围,并用新创建的范围替换当前范围,如下所示:

scope = scope.$new();

但在模板中使用此作用域时也不成功。

是否尝试调用
作用域。$new(true)
作用域。$new(false)
,具体取决于您想要的是新的隔离作用域还是新的继承作用域?我不确定你不选择真或假就可以这么说

是的,我选择了。如果您查看API:scope.$new()意味着创建一个范围,PrototypeCalls从其父级继承该范围。True as参数将创建一个新的隔离作用域。您是否有或可以创建一个plunker?这里有一个:-如果您看到,新作用域不用于编译原始模板,但如果我在交换作用域后使用编译服务,它会工作。我很清楚,因为指令编译函数是在链接函数之前执行的。但据我所知,编译函数内部没有操作它的作用域。-因此,我要求以某种方式更改范围,而无需在链接函数中创建元素并对其进行编译。如果angular接受scope:true或scope:{}(可选),如果没有其他指令需要新范围,但如果已经创建了新范围,则忽略它,这将是很酷的。这将使指令更容易重复使用。