初识AngularJS

刚开始学习Angularjs,以前也没有写过博客啥的,这次就在这里记录下自己的学习过程,看看学习效果会不会更好,希望自己能坚持写下去。

一、介绍Angular

angularjs是谷歌推出的一个基于MVC的前端框架,利用双向数据绑定可以减少代码量,快速展示页面的变化。新手也还处于懵逼的阶段,就不啰啰嗦嗦了,总之谷歌出品,必然强大。
Angularjs官网 (小心城墙太高)。

二、第一个Hello World程序

作为一个程序员,第一个程序当然要从Hello World开始啦!下面就开始上代码:
<pre>
<!DOCTYPE html>
<html lang="en" ng-app>
<head>
<meta charset="UTF-8">
<title>Hello World</title>
</head>
<body >
{{"Hello World"}}
<script src="../scripts/angular-1.4.0-rc.2/angular.min.js"></script>
</body>
</html>
</pre>

  1. 在这个小程序中,我们引入了1.4.0-rc.2版本的angular
  2. 在html标签中,添加了一个ng-app
    ng-app表示angularjs的程序入口,angular在ng-app标签范围内执行,也就是说在此程序中angular可以在整个html标签范围内执行。以此类推,若ng-app添加在body中或者某个div中,则angular只能在body或此div中执行,范围以外的地方即使写了angular语法也不起作用。
  3. 在body中有一个{{"Hello World"}}
    angularjs中使用两个大括号 {{ <small>表达式</small> }} 执行数据绑定,此处的表达式可以是字面量、angular变量、运算表达式,此处的表达式是一个字符串字面量“Hello World”
结果图
三、添加一个控制器

angular既然是MVC模型,那自然是离不开controller的了,controller是model和view之间的桥梁,控制数据在应用程序中的传递以及程序的逻辑。angular控制器采用ng-controller指令定义,每个控制器接受$scope参数。
<pre>
<!DOCTYPE html>
<html lang="en" ng-app="HelloWorld">
<head>
 <meta charset="UTF-8">
 <title>Hello World</title>
</head>
<body>
 {{"Hello World"}}
 <div ng-controller="HelloController">
  {{say}}
 </div>
<script src="../scripts/angular-1.4.0-rc.2/angular.min.js"></script>
<script >
 var hello=angular.module("HelloWorld",[]);
 hello.controller("HelloController",["$scope",function($scope){
         $scope.say="Hello,welcome to Angular world";
          }]);
</script>
</body>
</html>
</pre>

这段代码和上面代码有几处不同:

  1. 在底部添加了一行var hello=angular.module("HelloWorld",[]);
    此句话的意思是定义一个模块,注意模块的名字并不是hello,而是HelloWorld,module函数的第一个参数,第二个参数是一个数组,里面用于定义这个模块的依赖项
  2. hello.controller()就是定义一个名为HelloController的控制器,请注意这个控制器是属于模块hello的,第二个参数也是一个数组,里面的函数就是控制器的主体,参数必须是$scope。其实第二个参数也可以只写一个函数:
    <code>hello.controller("HelloController",function($scope){
             $scope.say="Hello,welcome to Angular world";
              });
    </code>
    但是这样写有一个问题,由于$scope并不是我们定义的,它是angular内置,利用依赖注入作用于控制器内,所以当用这种方法书写时,js经过压缩后就不认识$scope了,致使程序出错,关于依赖注入现在也不理解,慢慢学吧。
    总之,我们就采用代码块中的方法定义控制器就最好了,标准不会出问题
  3. ng-app=“HelloWorld”、ng-controller="HelloController",{{say}}
    定义好了module、controller当然就要去使用,ng-app是angular程序的开始,也就是一个模块,此处表示我们要用名为HelloWorld的模块,其实我们可以在一个页面内写多个ng-app这里之前搞错了,在一个页面如果用了多个ng-app,只有第一个会起作用,其他的必须要手动,手动启动可自行百度。然后在ng-app标签内部我们就可以使用属于那个模块的控制器,这里我们在一个div上使用了HelloController 。最后在这个控制器内部我们便可以使用控制器中的数据了,即model,此处是绑定的{{say}},我们之前在控制器内部定义了:
    <code>$scope.say="Hello,welcome to Angular world";</code>
    主意绑定用的是say,而不是$scope.say
    其实一个控制器就相当于定义了一个作用域,在这个作用域内可以使用控制器中的变量、函数,而在控制器外部自然是不能使用,关于作用域没有什么好说的,但是作用域链也很重要,不理解的可以参考下这篇博客:
    理解JavaScript中的作用域链
结果图
四、主意

网上angular的学习资料,好多一开始教程是这样的:

控制器声明错误

一开始我这样写总是报错,纠结了半天,最后才发现这是angular 1.3.0-beta.9及之前的写法,从1.3.0-rc.0开始控制器不能直接写成一个函数的方式,必须利用模块生成,也就是上面的写法。

五、总结

总之,写一个最简单的angular程序,我们要:

  1. 引入angular
  2. 定义模块
  3. 定义控制器
  4. 在html中使用ng-app、ng-controller

第一次写博客,有些啰嗦,也没啥重点,下一篇文章我将写一个仿购物车功能。
代码地址 https://github.com/wangqingqiang/Angularjs

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 217,084评论 6 503
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,623评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 163,450评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,322评论 1 293
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,370评论 6 390
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,274评论 1 300
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,126评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,980评论 0 275
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,414评论 1 313
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,599评论 3 334
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,773评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,470评论 5 344
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,080评论 3 327
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,713评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,852评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,865评论 2 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,689评论 2 354

推荐阅读更多精彩内容