我是AngularJS,JavaScript和HTML的新手。
我的问题是:¿在指令中声明范围的四种方法之间有什么区别?
我将展示方式,然后写出我对它的看法。如果我错了或是对的,请以有序的方式告诉我。
这是该指令的基础:
var app = angular.module('myApp', []);
app.directive('myDirective', function() {
return {
scope: //Here go the 4 ways
}
});
第一种方式:
scope: true
我的理解是:
A - 创建一个新的子范围,并且此子范围继承自其周围的父范围。
B - 该指令可以访问父作用域模型。
C - 是否可以在此范围内插入值。或者,此范围仅用于访问继承的数据吗?
第二种方式
scope: { // NO content, empty object }
A - 这会创建一个独立的范围。
B - 此范围无法访问任何父模型。
C - 虽然此范围无法访问父范围,但此隔离范围可以具有子范围。
第三方
//nothing, not declaring scope attribute.
第四方
scope: {// SOME content such as data binding strategies}
感谢。请让这个地方分享与这个一般性问题相关的信息(因此它实际上回答了问题),但这也是基于个人经验的进一步发展。
答案 0 :(得分:1)
所以基本上你只是总结了不同类型的创建范围。 但是你忘记了性能以及为什么创建没有隔离范围有时会更好。
隔离范围将:
对于孤立的范围,您不能:
<div myDirective myDirective2></div>
这将导致角度异常。
如果您不隔离范围:
scope: false
可以避免)例如ngModel
,ngClick
,ngBlur
...不会隔离范围,因为您可以在同一元素上使用它们。像这样:
<input ng-model="someValue" ng-blur="storeInput()"></input>
如果他们隔离了他们的范围,这是不可能的。