Angularjs 为什么在指令中使用范围以及如何使用范围?

Angularjs 为什么在指令中使用范围以及如何使用范围?,angularjs,angularjs-directive,scope,Angularjs,Angularjs Directive,Scope,我看到了很多例子,但即使是我也不理解指令中的范围原则。使用这个很让人困惑。一些示例使用范围:true;及 使用布尔值范围的内容:true;准确地执行?关键在于您是否要为指令创建一个独立的新作用域,还是要从父作用域继承。指定scope:true与scope:{}基本相同。它只是说,‘嘿,我想要我自己的私人范围在这里’。这两者之间的唯一区别是,您可以使用对象表示法来指定要在指令中使用的自己的范围属性 范围:真 如果设置scope:true而不是scope:{…},则该指令将使用原型继承。 这不是An

我看到了很多例子,但即使是我也不理解指令中的范围原则。使用这个很让人困惑。一些示例使用范围:true;及


使用布尔值范围的内容:true;准确地执行?

关键在于您是否要为指令创建一个独立的新作用域,还是要从父作用域继承。指定scope:true与scope:{}基本相同。它只是说,‘嘿,我想要我自己的私人范围在这里’。这两者之间的唯一区别是,您可以使用对象表示法来指定要在指令中使用的自己的范围属性

范围:真 如果设置scope:true而不是scope:{…},则该指令将使用原型继承。 这不是AngularJS正在做的事情——这是JavaScript原型继承的工作方式。

范围:假默认值 该指令不创建新的作用域,因此这里没有继承。这很容易,但也很危险,因为,例如,指令可能认为它正在范围上创建一个新属性,而实际上它正在破坏一个现有属性。对于编写作为可重用组件的指令来说,这不是一个好的选择。

范围:{……} 该指令创建一个新的隔离/隔离范围。它不是典型的继承。这通常是创建可重用组件时的最佳选择,因为指令不能意外读取或修改父范围

注意,即使父作用域有一个名称“Harry”,指令内的文本框也是空的。这是因为新的隔离作用域对其父作用域一无所知。

注意,即使父作用域有一个名称“Harry”,指令内的文本框也是空的。这是因为新的隔离作用域对其父作用域一无所知

注意:我现在不想发布作用域属性@、&、=之间的差异,这将是另一个教训

从该来源

可能重复的
scope: {
     sourceObj: '=',
     lookupSource: '@',
     searchRes: '&',
     disableSearch: ''
}