我在 AngularJS 中绝对是新手,我发现在尝试理解它是如何实现MVC模式时遇到了一些困难。
所以我首先怀疑这个例子中我有2个文件:
1) index.htm :
<!DOCTYPE html>
<html lang="en-us" ng-app="angularApp">
<head>
<title>Introduction to AngularJS</title>
<meta http-equiv="X-UA-Compatible" content="IE=Edge">
<meta charset="UTF-8">
<!-- load bootstrap and fontawesome via CDN -->
<link rel="stylesheet" href="//netdna.bootstrapcdn.com/bootstrap/3.2.0/css/bootstrap.min.css" />
<style>
html, body
{
font-size: 1.1em;
}
</style>
<!-- load angular via CDN -->
<script src="//code.angularjs.org/1.3.0-rc.1/angular.min.js"></script>
<script src="app.js"></script>
</head>
<body>
<header>
<nav class="navbar navbar-default">
<div class="container">
<div class="navbar-header">
<a class="navbar-brand" href="/">AngularJS</a>
</div>
<ul class="nav navbar-nav navbar-right">
<li><a href="#"><i class="fa fa-home"></i> Home</a></li>
</ul>
</div>
</nav>
</header>
<div class="container">
<!-- This div and its content is the view associated to the 'mainController': -->
<div ng-controller="mainController">
<h1>Hello world!</h1>
</div>
</div>
</body>
</html>
2) app.js 档案:
/* MODULE: one signgle object in the global namespace.
Everything indise the element having ng-app="angularApp" custom attribute is connected to the angularApp variable into the
global namespace
*/
var angularApp = angular.module('angularApp', []);
// CONTROLLERS
angularApp.controller('mainController', ['$scope', function ($scope) {
}]);
我发现在尝试确定谁是模型,谁是控制器以及谁是 VIEW 时遇到了一些困难。
因此,在我看来,了解html标记上定义的 ng-app =&#34; angularApp&#34; 属性:
<html lang="en-us" ng-app="angularApp">
将整个 index.htm 页面绑定到 angularApp 变量
var angularApp = angular.module('angularApp', []);
那么究竟代表 angularApp 变量的是什么?它是Angular 模块吗?什么是Angular中的模块?
答案 0 :(得分:2)
你应该真正阅读https://docs.angularjs.org/guide。还有一个非常好的教程可以回答您的所有问题https://docs.angularjs.org/tutorial。
最终,我发现没有办法绕过它。 AngularJs是一个复杂的框架,它有一个陡峭的学习曲线。
<html lang="en-us" ng-app="angularApp">
表示<html>
代码的内容由angularApp
app控制,但index.html不是view
,您可能会想到这一点。您应该将view
视为directive
附带的模板(即Angular组件)。
快速回顾一下Angular概念:https://docs.angularjs.org/guide/concepts
模块 - 应用程序不同部分的容器,包括 控制器,服务,过滤器,配置的指令 注射器
查看 - 用户看到的内容(DOM)
控制器 - 视图背后的业务逻辑
答案 1 :(得分:2)
来自angularjs.org文档
什么是模块?您可以将模块视为一个容器 您应用的不同部分 - 控制器,服务,过滤器, 指令等
为什么呢?大多数应用程序都有一个实例化和连线的主要方法 将应用程序的不同部分放在一起。
Angular应用程序没有主要方法。相反,模块是声明性的 指定应该如何引导应用程序。有几个 这种方法的优点:
声明性过程更容易理解。你可以打包代码 作为可重复使用的模块。模块可以按任何顺序加载(甚至可以加载 并行)因为模块延迟执行。单元测试只需要 加载相关模块,使它们保持快速。端到端测试可以使用 模块覆盖配置。
据说模块是你应用程序中的应用程序..在你的模块中你可以拥有控制器和模型..
答案 2 :(得分:1)
要理解Angularjs,你不能只停留在MVC模式中,使用angular可以使用此模式,但它更多MV *,模型视图无论你需要什么。
因此变量angularApp包含angularApp模块及其所有依赖项,控制器,提供程序,服务等...,模块可以是它所属的部分或整个应用程序。