2014-06-23 135 views
37

我是AngularJS的新手,我无法理解$scope是在AngularJS中。 是否有人可以用最简单的方式解释$scope在AngularJS中做了什么,我们可以用它来做什么。请用一种完全不懂编程知识的人来解释它。也有人可以用最简单的方式逐行解释代码吗?

function MyController($scope) { 
    $scope.username = 'World'; 

    $scope.sayHello = function() { 
     $scope.greeting = 'Hello ' + $scope.username + '!'; 
    }; 
}; 
+0

以上功能也可以在没有任何参考$ scope [[plunker](http://plnkr.co/edit/3RFKwkpyqGAU4loTI6hR?p=preview)] – tomd

+0

“$ scope基本上是一个javaScript对象与一些内置的钩子“([Lukas Ruebbelke](http://onehungrymind.com/)) – tomd

回答

49

每个控制器都有一个关联的$scope对象。

控制器(构造函数)函数负责设置模型属性和函数。这只能通过$ scope来完成。无论您在View(html文件)中应用哪种函数或模型,都可以使用范围在控制器中访问。

只能从HTML /视图访问此$ scope对象上定义的方法。示例 - 从纳克单击,过滤器等

现在,让我们看看你的例子一个接一个 -

function MyController($scope) { 
$scope.username = 'World'; 
}; 

在上面的例子中,你正在定义一个名为任何属性用户名,其值为“世界”。假设你有下面的代码行的文件 -

<div ng-controller="MyController"> 
<h1>{{data.username}}</h1></div> 

这将自动拿起从控制器的值,并在屏幕上显示出来。值得注意的是“数据”。在标记中是html页面可以引用控制器的控制器的名称。这通常是在控制器内或HTML文件的顶部定义的。

2.

$scope.sayHello = function() { 
$scope.greeting = 'Hello ' + $scope.username + '!'; 
}; 

这是您可以在其中通过下面的代码在视图访问控制器定义的函数 -

<div ng-controller="MyController"> 
<h1>{{data.greeting}}</h1></div> 

这里,data.greeting会自动拾取来自sayHello函数的值,即显示的值将是“Hello World”。用户名中的“World”与之前的“Hello”连接。

我希望这能消除你的疑惑。 :)

7

Read The Following Manual

换句话说,范围是一个“绑定”到应用控制器的DOM元素的“对象”。 所有子元素都可以读取和修改范围数据(除非您在新范围中修改原语或将它们隔离)。

相关问题