创建指令时,何时应该使用继承作用域(即scope:true
),何时不应该使用它(即scope:false
)
我理解作用域类型之间的区别,并知道每种作用域类型的作用。但是我不明白什么时候我应该选择其中一个而不是另一个。
据我所知,以下是决策标准
- 控制器范围数据更改-(单向)->指令范围数据更改:使用继承范围。范围:True
- 控制器范围数据更改<->(双向)->指令范围数据更改:使用父范围。作用范围:False
- 控制器范围数据变更-(不需要数据变更)-指令范围数据变更:使用新的隔离范围。作用域:{}
假设我们有一个功能如下:{Username}文本框(外部指令)和Hello {Name}(在指令内部,显示在{Username}文本框之后)。
- 如果功能就像改变{Username}应该反映{Name},那么使用1.
- 如果功能类似于更改{Name}或{Username}将反映反之,则使用2。
- 如果{Name}和{Username}之间没有关系,则使用3.
虽然我们可以使用3(隔离作用域)和3种类型的前缀(@,=,&),我们可以通过它在作用域之间传递数据,这是根据我的知识最好的方法。