AngularJS进行应用开发的一个重要的思维模式: 从构造声明式界面入手

ng-app: 这个指定定义并且关联了使用angularJS的HTML页面部分

ng-model: 这个指定定义并绑定AngularJS数据和HTML页面中相关输入元素(input,textarea等等)

ng-bind: 这个指定将AngularJS的数据绑定到页面指定HTML元素上,例如, <p>

<div ng-app="" class="ng-scope">
<input type="text" ng-model="website" class="ng-pristine ng-valid">
<p>
你好,<span ng-bind="website" class="ng-binding"></span>
</p>
</div> <script src="angular.min.js"></script>

相关说明:

ng-app 指定暗示AngularJS程序开始
ng-mode 指定定义了一个“模型”名称,使用这个名称可以在上面ng-app中访问和使用相关数据
ng-bind 指定使用上面定义的“模型”名称展示到页面相关的元素中.
</div>关闭标签暗示了当前AngularJS应用结束

ng-init:定义程序初始化的一些数据
ng-repeat:定义重获取数据集中的内容

<div ng-app="" ng-init="languages=[{name:'java', learningcurve:'high'},{name:'javascript',learningcurve:'medium'}]">
<p>编程语言</p>
<ul>
<li ng-repeat="language in languages">
{{'编程语言:'+ language.name +', 难度:' + language.learningcurve}}
</li>
</ul>
</div>

AngularJS中的控制器

ng-controller:定义控制器来控制模块的相关数据

页面定义:

<div ng-app="" ng-controller="myCtrl">
...
</div>

myCtrl即是需要定义的控制器方法:

 //控制器使用Javascript来定义,如下:

 function myCtrl($scope){
$scope.course = { //定义一个course对象
title:"AngularJS入门",
enroll: 20,
result: function(){
//定义一个方法:这个方法返回组装的字符串
var courseObj;
courseObj = $scope.course;
return courseObj.title + " " + courseObj.enroll + "人报名中";
}
};
}

在页面中使用ng-model绑定输入元素,使用表达式来调用控制器相关方法,如下:

<div ng-app="" ng-controller="myCtrl">
课程:<input type="text" ng-model="course.title"><br>
报名:<input type="text" ng-model="course.enroll"><br>
<hr>
课程报名信息:<span class="text">{{course.result()}}</span>
</div>

AngularJS的过滤器使用

uppercase:转换为大写
lowercase:转换为小写
currency:转换为货币单位
filter:过滤内容
orderby:内容排序

<div ng-app=""
ng-init="books=[{language:'javascript', price:50},
{language:'java', price:30},
{language:'c++', price:70},
{language:'html', price:20}]"> 过滤:<input type="text" ng-model="book"> <ul>
<li ng-repeat="book in books | filter: {language:book} | orderBy: 'price'">
{{ book.language | uppercase }} : {{book.price | currency}}
</li>
</ul> </div>

AngularJS的模块

AngularJS 支持模块化方式。模块用来帮助分离逻辑,例如,服务,控制器,应用等等。更利于代码的管理和维护。我可以方便的在不同的JS中定义不同的模块。这样对于大型项目来说,维护成本更低!
下面例子中,我们将创建两个模块:
  • 应用模块:用来初始化控制器相关的应用
  • 控制器模块:用来定义相关控制器

应用模块

var mainApp = angular.module("mainApp", []);

这里声明了一个mainApp的应用,使用了angular.module方法,并且传递了一个空的数组,这个数组用来包含独立的模块

控制器模块

mainApp.controller("studentController", function($scope) {
$scope.student = {
firstName: "Terry",
lastName: "Lee",
fees:500,
subjects:[
{name:'编程语言基础',marks:90},
{name:'C语言',marks:85},
{name:'HTML/CSS',marks:61},
{name:'Java',marks:85},
{name:'NodeJS',marks:65}
],
fullName: function() {
var studentObject;
studentObject = $scope.student;
return studentObject.firstName + " " + studentObject.lastName;
}
};
});

引用模块

<div ng-app="mainApp" ng-controller="studentController">
..
<script src="mainApp.js"></script>
<script src="studentController.js"></script>

事件

  • ng-click
  • ng-dbl-click
  • ng-mousedown
  • ng-mouseup
  • ng-mouseenter
  • ng-mouseleave
  • ng-mousemove
  • ng-mouseover
  • ng-keydown
  • ng-keyup
  • ng-keypress
  • ng-change

示例:表单reset效果,使用ng-click事件处理

<div ng-app="" ng-controller="studentController" class="ng-scope">

  <input name="firstname" type="text" ng-model="firstName" value="test" required="" class="ng-pristine ng-valid ng-valid-required"><br>
<input name="lastname" type="text" ng-model="lastName" required="" class="ng-pristine ng-valid ng-valid-required"><br>
<input name="email" type="email" ng-model="email" required="" class="ng-pristine ng-valid-email ng-valid ng-valid-required"><br> <!-- ng-click触发控制器方法 -->
<button ng-click="reset()">点击这里重置表单数据</button> </div>
function studentController($scope) {
//调用reset将表单输入框对应值设置为如下缺省值
$scope.reset = function(){
$scope.firstName = "terry";
$scope.lastName = "lee";
$scope.email = "terrylee@gbtags.com";
}
$scope.reset();
}

Angular的include指令

ng-include:嵌入HTML页面

<div ng-app="" ng-controller="studentController">

  <!-- 使用angularjs的include指令导入一个外部html -->
<div ng-include="'/cdn/gblibraryassets/libid101/main.html'"></div> </div>

(一)Angularjs - 入门的更多相关文章

  1. AngularJS入门心得4——漫谈指令scope

    上篇<AngularJS入门心得3——HTML的左右手指令>初步介绍了指令的概念和作用.已经和指令打过一个照面,就不会那么陌生了,今天主要介绍的是一个困扰了我很久终于想通的问题,这个问题与 ...

  2. AngularJS入门心得3——HTML的左右手指令

    在<AngularJS入门心得1——directive和controller如何通信>我们提到“AngularJS是为了克服HTML在构建应用上的不足而设计的.HTML是一门很好的为静态文 ...

  3. AngularJS入门心得2——何为双向数据绑定

    前言:谁说Test工作比较轻松,最近在熟悉几个case,差点没疯.最近又是断断续续的看我的AngularJS,总觉得自己还是没有入门,可能是自己欠前端的东西太多了,看不了几行代码就有几个常用函数不熟悉 ...

  4. AngularJS入门心得1——directive和controller如何通信

    粗略地翻了一遍<JavaScript DOM编程艺术>,就以为可以接过AngularJS的一招半式,一个星期过去了,我发现自己还是Too Young,Too Simple!(刚打照面的时候 ...

  5. AngularJS入门教程:日期格式化

    AngularJS入门教程:日期格式化[转载] 本地化日期格式化: ({{ today | date:'medium' }})Nov 24, 2015 2:19:24 PM ({{ today | d ...

  6. 【转载】图灵AngularJS入门教程

    摘自图灵的AngularJS入门教程:http://www.ituring.com.cn/article/13471 感觉非常不错,所以推荐到首页一下! (一)Hello World! 开始学习Ang ...

  7. 《AngularJS入门与进阶》图书简介

    一.图书封面 二.图书CIP信息 图书在版编目(CIP)数据 AngularJS入门与进阶 / 江荣波著. – 北京 : 清华大学出版社, 2017 ISBN 978-7-302-46074-9 Ⅰ. ...

  8. 跟我学AngularJs:AngularJs入门及第一个实例

    林炳文Evankaka原创作品.转载请注明出处http://blog.csdn.net/evankaka 摘要:主要给大家介绍了AngularJs及其特性,并以3个实例来做说明. 本教程使用Angul ...

  9. angularJS入门小Demo2 【包含不用数据库而用data.json格式响应前台的ajax请求方式测试】

    事件绑定: <html> <head> <title>angularJS入门小demo-5 事件指令</title> <script src=&q ...

随机推荐

  1. 习题二:string数组应用

    说明: 读字符串char buf[100]="xxx:yyy:zzz:aaa:bbb" 按“:”进行分解到string数组中去 逻辑: 通过指针遍历整个字符串 遇到'\0'表示字符 ...

  2. 搬瓦工搭建VPN

    搬瓦工VPS的PPTP VPN搭建其实和上面都是很简单的,这个要用到上面的搬瓦工VPS控制面板. Root shell - advanced 下载 centos 6 一键安装包 wget --no-c ...

  3. [Android] 混音器AudioMixer

    AudioMixer是Android的混音器,通过混音器可以把各个音轨的音频数据混合在一起,然后输出到音频设备. 创建AudioMixer AudioMixer在MixerThread的构造函数内创建 ...

  4. h.264 mvp求解过程

    h.264标准中由于分为宏块分割块(8x8),子宏块分割块(4x4),所以各种各样的求解过程比较繁琐 下面整理出标准中mvp的求解过程 8.4.1.3 已知条件有当前块的属性:位置.块类型需要得到当前 ...

  5. POJ3009 Curling 2.0(DFS)

    题目链接. 分析: 本题BFS A不了. 00100 00001 01020 00000 00010 00010 00010 00010 00030 对于这样的数据,本来应当是 5 步,但bfs却 4 ...

  6. FFT多项式乘法加速

    FFT基本操作...讲解请自己看大学信号转置系列... 15-5-30更新:改成结构体的,跪烂王学长啊啊啊啊机智的static... #include<iostream> #include ...

  7. -_-#【Canvas】measureText, translate, drawImage

    <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title> ...

  8. at命令

    在windows系统中,windows提供了计划任务这一功能,在控制面板 -> 性能与维护 -> 任务计划, 它的功能就是安排自动运行的任务. 通过'添加任务计划'的一步步引导,则可建立一 ...

  9. MyBatis Parameter not found

    遇到一个很牛X的问题.当MyBatis的foreach中item='cr'时,程序居然抛出异常: 19:07:55.338 DEBUG c.l.dao.PageMapper.selectByCrite ...

  10. 《SDN核心技术剖析和实战指南》3.1控制器核心技术读书笔记

    在SDN的架构中,控制器可以说是SDN的核心,它负责对底层转发设备的控制以及向上层应用提供可编程性的北向接口.从实现上看,主要分三个层面来考虑,南向接口技术,北向接口技术以及东西向的可扩展性能力.下面 ...