聲明了一個模塊和一個控制器AngularJS的處理過程
阿新 • • 發佈:2017-05-18
say 作用域 col 如何 負責 log cto 引用傳遞 nbsp
例如下面這段代碼。這是一個簡單的應用,聲明了一個模塊和一個控制器:
angular.module(‘myApp‘, []) .factory(‘greeter‘, function() { return { greet: function(msg) {alert(msg);} } }) .controller(‘MyController‘,function($scope, greeter) { $scope.sayHello = function() { greeter.greet("Hello!"); }; });
當AngularJS實例化這個模塊時,會查找 greeter 並自然而然地把對它的引用傳遞進去:
<div ng-app="myApp"> <div ng-controller="MyController"> <button ng-click="sayHello()">Hello</button> </div> </div>
而在內部,AngularJS的處理過程是下面這樣的:
// 使用註入器加載應用 var injector = angular.injector([‘ng‘, ‘myApp‘]);
// 通過註入器加載$controller服務:var $controller = injector.get(‘$controller‘);
var scope = injector.get(‘$rootScope‘).$new();
// 加載控制器並傳入一個作用域,同AngularJS在運行時做的一樣 var MyController = $controller(‘MyController‘, {$scope: scope})
上面的代碼中並沒有說明是如何找到 greeter 的,但是它的確能正常工作,因為 $injector會負責為我們查找並加載它。
聲明了一個模塊和一個控制器AngularJS的處理過程