码迷,mamicode.com
首页 > Web开发 > 详细

声明了一个模块和一个控制器AngularJS的处理过程

时间:2017-05-18 20:26:46      阅读:225      评论:0      收藏:0      [点我收藏+]

标签:引用   mod   传递   模块   nbsp   roo   查找   cli   而在   

例如下面这段代码。这是一个简单的应用,声明了一个模块和一个控制器:

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的处理过程

标签:引用   mod   传递   模块   nbsp   roo   查找   cli   而在   

原文地址:http://www.cnblogs.com/ms-grf/p/6874868.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!