【问题标题】:Is $scope a normal function parameter or something special?$scope 是普通的函数参数还是特殊的?
【发布时间】:2015-05-28 15:35:38
【问题描述】:

我是 Angular 的初学者。我在看 w3schools 教程:

http://www.w3schools.com/angular/angular_controllers.asp

我试图改变

app.controller('myCtrl', function($scope) {
    $scope.firstName = "John";
    $scope.lastName = "Doe";
});

app.controller('myCtrl', function(a) {
    a.firstName = "John";
    a.lastName = "Doe";
});

示例停止工作。看起来 $scope 不仅仅是一个常规的函数参数,但它是什么?

【问题讨论】:

  • 是的,$scope 是一个特殊参数,至少在刚开始时,它是 Angular 的主要构建块之一。我还建议不要向 w3schools 学习。一个好的起点是egghead.io
  • 我了解作用域的目的是什么,但我不明白 Javascript 如何允许函数参数出现这种奇怪的行为?
  • Angular 检查参数名称以确定为每个参数注入的内容。所以改变它的名字意味着 Angular 不再知道要注入什么。查看@tommy 的答案,了解如何手动注入依赖项的示例。

标签: angularjs


【解决方案1】:

您可以更改参数的名称,但您需要使用以下语法符号:

app.controller('myCtrl', function(a) {
    a.firstName = "John";
    a.lastName = "Doe";
});

app.controller('myCtrl', ['$scope', function(a) {
    a.firstName = "John";
    a.lastName = "Doe";
}]);

看看DI

【讨论】:

  • 所以 Angular 对这些方法做了一些反思,这就是参数名称很重要的原因,对吧?
  • 它使用第一个参数作为函数参数的真实名称。这是必要的,因为如果没有这种语法,缩小过程会破坏应用程序。
猜你喜欢
  • 2012-10-14
  • 2012-12-13
  • 2019-02-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多