1. 程式人生 > >聲明了一個模塊和一個控制器AngularJS的處理過程

聲明了一個模塊和一個控制器AngularJS的處理過程

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的處理過程