2016-06-07 98 views
1

我有一个简单的指令,而不范围定义:在哪些情况下,角度指令范围等于控制器范围?

angularModule.directive('sizer', function() { 
    return { 
     restrict: 'EA', 
     link: function(scope, element, attr) {  
     } 
    } 
}); 

有一个在这个指令NO“范围”的定义。

这个指令被包括在视图:

<div sizer></div> 

通常在这种指令的范围等于控制器的范围。但有时它不会。有时指令的作用域是控制器的子作用域。在哪种情况下可能?

回答

1

指令在Angularjs有3个范围,下面

  • scope:false提到:不创建任何新的作用域,使用默认情况下的父作用域(控制器的作用域)。
  • scope:true:确实创建了一个新的子作用域,它从父作用域(控制器的作用域)原型继承。
  • scope:{}:隔离范围,该范围从犯规具有绑定属性使用父母的范围父范围继承 '@', '=', '&'

参阅:scopes in angualrjs

1

使用时scope真正从父母继承,同时使用scope空对象,它使新的孤立范围

angularModule.directive('sizer', function() { 
    return { 
     scope: true, // use a child scope that inherits from parent 
     restrict: 'EA', 
     link: function(scope, element, attr) {  
     } 
    } 
}); 

angularModule.directive('sizer', function() { 
    return { 
     scope: {}, // use a new isolated scope 
     restrict: 'EA', 
     link: function(scope, element, attr) {  
     } 
    } 
});