javascript - Angular $scope 为什么不能改变?

标签 javascript angularjs

<分区>

我决定看一看 Angularjs。在教程的第一步之后,我尝试重命名 $scope 变量。但它打破了一切。

phonecatApp.controller('PhoneListCtrl', function($scope) { ... }); // this works

phonecatApp.controller('PhoneListCtrl', function(foo) { ... }); // this does not works

为什么?它不只是传递给回调的局部变量吗?为什么它必须具有特定名称?

最佳答案

它是注入(inject)变量。这意味着 Angular 实际上会从它的名字中推断出它的值。这就是为什么只有“$scope”会起作用。

这适用于 Controller 、服务等的任何参数。例如,如果您定义自己的服务,您也将注入(inject)它:

// You will not get instance of your service directly. Instead, just
// put it right into function parameter list, and it will get injected
// by Angular for you.
phonecatApp.controller('PhoneListCtrl', function ($scope, SomeService) {
});

// Declaration of your custom service.
phonecatApp.factory('SomeService', function() {
});

您将在 this article 中找到有关 Angular 中 DI(依赖项注入(inject))的更多信息.

关于javascript - Angular $scope 为什么不能改变?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23968649/

相关文章:

angularjs - Angular 2 测试 - 组件状态在测试之间持续存在(即不重置)

javascript - 如何使用 $q Promise 同步执行 FOR LOOP?

javascript - 如何从 HTML 访问 CSV 文件并将其保存在数组中(仅使用 Javascript)

javascript - PouchDB : TypeError: angular. 工厂错误不是函数

javascript - 错误 : [ng:areq] Argument 'ControllerName' is not a function, 未定义

JavaScript 删除标签在 Mozilla 中不起作用

javascript - Foundation 6 网格编程列删除

javascript - 使用 cssRules.cssText 返回 RGB 值而不是 HEX

javascript - 在 Controller 中注入(inject)服务时出错

javascript - XUL MenuItem 在动态添加弹出窗口后消失