【问题标题】:In which cases angular directive scope equals controller scope?在哪些情况下角度指令范围等于控制器范围?
【发布时间】:2016-06-07 19:08:22
【问题描述】:

我有一个没有范围定义的简单指令:

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

此指令中没有“范围”定义。

该指令包含在视图中:

<div sizer></div>

通常该指令中的范围等于控制器的范围。但有时它不会。有时指令的范围是控制器的子范围。什么情况下可以?

【问题讨论】:

    标签: javascript angularjs


    【解决方案1】:

    Angularjs 中的指令有 3 个作用域,如下所述

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

    参考:scopes in angualrjs

    【讨论】:

      【解决方案2】:

      当使用 scope true 时,它​​从父级继承,而使用 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) {      
              }
          }
      });
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-01-16
        • 1970-01-01
        • 2015-07-20
        • 1970-01-01
        • 2013-05-28
        • 1970-01-01
        相关资源
        最近更新 更多