我找不到关于Angular.js的这个信息,我注意到我正在工作时,这两个值的工作方式不一样。有什么不同?
.directive('foo',function() { return { scope: true }; }); .directive('foo',function() { return { scope: {} }; });
两个范围:true和scope:{}将为该指令创建一个子范围。但,
范围:true将原型从父级继承属性(例如指令所在的控制器),其范围:{}将不会从父级继承属性,因此称为隔离
例如说我们有一个控制器c1和两个指令d1和d2,
app.controller('c1',function($scope){ $scope.prop = "some value"; }); .directive('d1',function() { return { scope: true }; }); .directive('d2',function() { return { scope: {} }; }); <div ng-controller="c1"> <d1><d1> <d2><d2> </div>
d1(scope:true)将可以访问c1范围 – >其中d2与c1范围隔离。
注1:d1和d2将为每个定义的指令创建一个新的范围。
注2:除了两者之间的区别,范围:true – 对新的子范围所做的任何更改都不会反映到父范围。但是,由于新范围是从父范围继承的,因此在c1范围(父范围)中所做的任何更改都将反映在指令范围内。