在这个简单的AngularJs页面中,控制器在哪里?
Where is the controller in this simple AngularJs page?
我被告知,每个带有ngApp指令的AngularJS页面都有一个控制器,提供$scope。在W3Schools网站给出的最早、最简单的例子中,代码中没有ngController标签:
<!DOCTYPE html>
<html lang="en-US">
<script src="http://ajax.googleapis.com/ajax/libs/angularjs/1.3.14/angular.min.js"></script>
<body>
<div ng-app="">
<p>Name : <input type="text" ng-model="name"></p>
<h1>Hello {{name}}</h1>
</div>
</body>
</html>
这个页面显然可以工作——在W3Schools链接上试试——并且有作用域($scope.name)。是否总是存在隐式控制器?
谢谢,杰罗姆。
不,这里没有隐式控制器,在幕后是
$rootScope
当你没有在angular ng-app
中指定module
时,它将在没有angular
模块的页面上初始化angular。
但是由于你没有在这里提供ng-controller
, Angular将创建$scope
,它将使用$rootScope
, &将在$rootScope
内创建变量
因为每当你在页面上写ng-controller
指令时。Angular在当前运行的作用域上使用$new(false)
方法,从父scope
创建一个新的作用域。在这种情况下,如果我们在这里引入ng-controller
,那么它可能是$rootScope.$new()
。
编辑
您可以通过使用angular.injector
$rootScope
来验证代码已添加到$rootScope
中function checkScopeValues() {
var app = angular.element(document.getElementById('test')).injector();
var rootScope = app.get('$rootScope');
alert("value from rootScope " + rootScope.name);
}
这里的Plunkr
此页面上没有控制器。但是ng-controller
并不是唯一创建$作用域的指令。ng-app
也创建了$scope,这是name
在
控制器就是一些与作用域交互的代码。
这只是UI中一个简单的双向绑定,它实际上创建了控制器本身,并将$作用域绑定到你的指令中:但在现实世界中,你必须创建一个模块,然后将控制器注入其中。这只是让你对AngularJS有所了解,我在这里找到了jenkov的一个非常好的教程,它将指导你从头开始创建AngularJS应用程序链接到教程也可以在google上搜索一些AngularJs JsFiddle的例子,你可以找到很多帮助你入门的例子
- 在哪里使用名为“;冻结”;
- Ember.js-接口状态应该存储在哪里
- 在Redux中,我应该在哪里编写复杂的异步流
- 在哪里可以学习ECMAScript标准中尚未包含的JavaScript功能
- 在哪里可以找到RXUI Javascript'时间飞逝'实例
- Redux应用程序结构-在哪里放置服务/业务逻辑
- 在哪里可以找到'项目'在plothover函数中
- angularjs-控制器在表单提交时未调用
- Javascript-在哪里放置常量,全局或本地
- Sequelize:这些方法应该驻留在哪里
- AJAX更新面板不;t工作.请帮我找出我错在哪里.
- 在哪里存储HTML模板以在Backbone.js中使用
- ForerunnerDB将其数据库保存在哪里
- 在哪里可以找到R-to-JavaScript编译器
- 在哪里操作通过 AJAX 服务获得的数据?链接 fn 或控制器
- 当你应该在 Rails 应用程序中使用来自控制器的变量时,在哪里放置 javascript 代码
- 从属YII输入框?我的错误在哪里?如何在dropDownList中添加Onchange事件?而无需使用控制器
- AngularJS:指令vs控制器——在哪里放什么逻辑
- 在这个简单的AngularJs页面中,控制器在哪里?
- Angular UI路由器:我应该在哪里改变状态?控制器吗?服务?事件监听器