这个简单的AngularJs页面中的控制器在哪里?

时间:2015-08-21 20:54:17

标签: javascript angularjs angularjs-controller angularjs-module

我被告知每个带有ngApp指令的AngularJS页面都有一个控制器,提供$ scope。在W3Schools站点给出的最早,最简单的示例中,代码没有ngController标记:

ISNULL(Column1, '')

该页面显然有效 - 在W3Schools链接上尝试 - 并且具有范围($ scope.name)。是否总有一个隐含的控制器?

谢谢, 杰罗姆。

3 个答案:

答案 0 :(得分:3)

  

没有隐式控制器,在场景后面是$rootScope

如果您未在角度module中指定ng-app,则会在页面上初始化没有angular模块的角度。

但是,由于您未在此处提供ng-controller,因此Angular将创建$scope,它将使用$rootScope,&将在$rootScope内创建变量。

因为每当你在页面上写ng-controller指令时。 Angular在当前运行范围内使用scope方法从父$new(false)创建新范围。在这种情况下,如果我们在此处引入ng-controller,那么它可能是$rootScope.$new()

修改

您可以使用$rootScope

访问$rootScope,验证代码是否已添加到angular.injector

<强>代码

function checkScopeValues() {
  var app = angular.element(document.getElementById('test')).injector();
  var rootScope = app.get('$rootScope');
  alert("value from rootScope " + rootScope.name);
}

Plunkr Here

答案 1 :(得分:2)

此页面上没有控制器。但是ng-controller并不是创建$ scope的唯一指令。 ng-app还会创建$ scope,即name所在的$ scope

控制器只是与范围交互的一些代码。

答案 2 :(得分:0)

它在UI中只是一个简单的双向绑定,它实际上创建了控制器本身并将$ scope绑定到你的目标:但在现实世界中你必须创建一个模块然后将控制器注入其中。这个只是让你了解AngularJS是什么,我在这里找到了jenkov的一个非常好的教程,它将指导你从头开始创建AngularJs应用程序 Link to the Tutorial  在Google上搜索一些AngularJs JsFiddle示例,你可以找到很多帮助你入门的例子 -