我正在学习Angular并尝试剖析以下代码:
phone.js
angular
.module('phone', [])
.factory('phoneService', phoneService);
function phoneService() {
var service = {
getAll: getAll
};
function getAll() {
phones = [
{
id: 0,
name: 'Luke Skywalker',
number: 111-222-333,
},
{
id: 1,
name: 'R2D2',
number: 111-222-444,
},
]
return phones;
}
return service;
}
app.js
angular
.module('app', ['phone'])
.controller('AppController', AppController);
function AppController ($scope, phoneService) {
$scope.phones = phoneService.getAll();
$scope.title = "Customer Phones";
}
我对$scope
和phoneService
的使用很感兴趣。它们是对AppController外部的实际变量的引用。 $scope
是AngularJS提供的变量,phoneService
是 phone.js 中工厂名称的引用。我发现它们必须完全按照它们的名称命名,否则它们将不会引用具有该名称的实际名称。这是指向plunker code的链接。
我不明白这是如何在幕后工作的。我试图创建一个示例JavaScript,看看我是否可以将对全局变量的引用传递给函数,然后在函数内部访问它。正如预期的那样,它认为变量是未定义的。
var i = {name: 'Bob'};
TestHello(Hello);
function Hello(i)
{
document.writeln("name is --" + i.name);
}
function TestHello(K)
{
K();
}
链接以在js.do code
测试上述代码所以,我的问题是什么使AngularJS代码将外部范围内的变量链接到与参数同名的传递?