我被告知每个带有ngApp指令的AngularJS页面都有一个控制器,提供$ scope。在W3Schools站点给出的最早,最简单的示例中,代码没有ngController标记:
ISNULL(Column1, '')
该页面显然有效 - 在W3Schools链接上尝试 - 并且具有范围($ scope.name)。是否总有一个隐含的控制器?
谢谢, 杰罗姆。
答案 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);
}
答案 1 :(得分:2)
此页面上没有控制器。但是ng-controller
并不是创建$ scope的唯一指令。 ng-app
还会创建$ scope,即name
所在的$ scope
控制器只是与范围交互的一些代码。
答案 2 :(得分:0)
它在UI中只是一个简单的双向绑定,它实际上创建了控制器本身并将$ scope绑定到你的目标:但在现实世界中你必须创建一个模块然后将控制器注入其中。这个只是让你了解AngularJS是什么,我在这里找到了jenkov的一个非常好的教程,它将指导你从头开始创建AngularJs应用程序 Link to the Tutorial 在Google上搜索一些AngularJs JsFiddle示例,你可以找到很多帮助你入门的例子 -