Angularjs中的范围

Angularjs中的范围,angularjs,angularjs-directive,angularjs-scope,Angularjs,Angularjs Directive,Angularjs Scope,我试图理解angularjs中的范围 比如说,在angularjs中注册指令时,如果我们不提供任何作用域作为对象的属性,那么对象的作用域是什么 例如考虑下面的代码:-< /P> app.directive("kid", function() { return { restrict: "E", template: '<input type="text" ng-model="chore"> {{chore}}' }; }); app.directive(“kid”,functi

我试图理解angularjs中的范围

比如说,在angularjs中注册指令时,如果我们不提供任何作用域作为对象的属性,那么对象的作用域是什么

例如考虑下面的代码:-< /P>

 app.directive("kid", function() {
 return {
restrict: "E",
template: '<input type="text" ng-model="chore"> {{chore}}'
  };
});
app.directive(“kid”,function()){
返回{
限制:“E”,
模板:“{{chore}}”
};
});
现在假设我的html中有2个元素:-

  <kid></kid>
  <kid></kid> 


那么,上述内容如何最终共享相同的范围呢?我还没有找到令人信服的答案。

是的,因为您没有声明指令的任何
范围
选项,它将共享相同的范围

这是

现在来谈谈问题,什么是范围对象?

Angular中的
scope
对象没有上下文信息,可在
html
上使用,也可用于提供双向绑定。基本上,作用域与一些控制器绑定在一起

对于指令
范围
,如果未在指令中提及
范围
属性,则表示指令共享放置指令元素的控制器的范围

要将它们视为每个指令的不同
作用域
,可以创建一个具有独立作用域的指令,当您在指令中定义
作用域:{}
时,可以使用指令中的
作用域:{}
来定义该指令,它使用
$scope.$new(true)
方法创建一个独立的子作用域,该子作用域不是典型地从父作用域继承的


对于隔离作用域,您的问题是关于作用域继承和隔离作用域

如果在指令对象上声明一个scope属性,则该指令有自己的隔离作用域

如果未在指令对象上声明scope属性,则指令将继承它在其中实例化的作用域的作用域

因此,对于没有声明隔离作用域的kid指令的定义,下面代码示例中的kid指令都继承了它们在其中实例化的控制器的作用域

<div ng-controller="myCtrl">
     <kid></kid>
     <kid></kid> 
</div>

范围是指应用程序模型的对象。它是表达式的执行上下文。作用域按层次结构排列,模仿应用程序的DOM结构。作用域可以监视表达式和传播事件

范围特征

  • 作用域提供了观察模型突变的API($watch)
  • 作用域提供了API($apply),用于通过 系统从“角度域”之外进入视图 (控制器、服务、角度事件处理程序)
  • 作用域提供用于计算表达式的上下文
  • 例如,{username}}表达式是没有意义的,除非它是根据定义username属性的特定作用域计算的。作用域是应用程序控制器和视图之间的粘合剂


    你似乎把孤立作用域理解为一个概念,但你的英语给大量的误解留下了空间。也许重写得更仔细一点。我确实开始编辑你的答案,但发现自己完全重写了,所以我只添加了一个我自己的答案。