【发布时间】:2016-02-07 17:45:29
【问题描述】:
我是 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) {
}]);
我在试图确定谁是 MODEL、谁是 CONTROLLER 以及谁是 VIEW 时发现了一些困难。
所以在我看来,ng-app="angularApp" 属性定义在 html 标签上:
<html lang="en-us" ng-app="angularApp">
将整个 index.htm 页面绑定到 angularApp 变量
var angularApp = angular.module('angularApp', []);
那么 angularApp 变量究竟代表什么?它是 Angular 模块吗? Angular 中的模块到底代表什么?
【问题讨论】:
-
我自己对 Angular 的经验很少,但据我了解,该模块在 MVC 模式中扮演着控制器的角色。并且在模块中是视图中每个动态元素的“模型”。这些是这样声明的
$scope.PropertyA = blah;或者可能是一个函数而不是一个值。 -
@Nick 所以我可以说 $scope 对象类似于 Java MVC 应用程序的模型对象 (POJO)?
-
我无法真正权威地回答这个问题,因为我没有 Java 经验。
-
$scope 不是 POJO,因为它不是。除了模型属性之外,它还包含一堆特定于范围的东西。您可以通过记录它或检查 $rootScope 文档来弄清楚。
-
如果你想通过例子学习,我推荐 John Papa (github.com/johnpapa/ng-demos/tree/master/modular/src/client/app) 的模块化角度演示。你可以从他如何构建他的项目及其模块中学到很多东西。这是一个示例应用程序,实现了同一作者著名的样式指南github.com/johnpapa/angular-styleguide。该演示完全改变了我对在应用程序中使用多个模块是否有用以及如何有用的想法。
标签: javascript angularjs javascript-framework