AngularJS - 快速入门
刚开始接触时总是去wiki或各种百科以了解一番。
它们会告诉我一些MVVM、双向数据绑定、依赖注入等等名词,觉得这些名词好上档次,然后我很可能就不打算用这个东西了。
AngularJS是什么?
完全使用 JavaScript编写的客户端技术。同其他历史悠久的 Web技术( HTML、 CSS
和JavaScript)配合使用,使Web应用开发比以往更简单、更快捷。
不考虑那些名词,本篇帮助你快速了解AngularJS的基本用法。
感谢 @myqianlan 菊苣提醒,本文用的AngularJS版本为1.2.x,1.3.x中不再用本文中提到的方式声明controller。
先从这段开始:
<div ng-app="" data-ng-init="name='Kavlez'">
<p>Name: <input type="text" ng-model="name"></p>
<p ng-bind="name"></p>
{{name}}
{{6+8}}
</div>
- ng-app:定义一个AngularJS应用,被其包含的内容都属于该应用。
- ng-init:初始化应用数据。
- ng-model:将数据绑定到当前应用。
- ng-bind:将应用中定义的变量在该标签中显示
AngularJS的指令都是以ng开头,或者也可以使用data-ng开头。
AngularJS的表达式用两个大括号表示:{{expression}}
这便是AngularJS最基本的功能:数据绑定。
我们可以对各种类型进行绑定并显示:
Number
<div ng-app="" ng-init="quantity=1;cost=5">
<p>Total : ¥{{ quantity * cost }}</p>
</div>
String
<div ng-app="" ng-init="firstName='Kavlez';lastName='Jin'">
<p>The name is {{ firstName + " " + lastName }}</p>
</div>
Object
<div ng-app="" ng-init="person={firstName:'Kavlez',lastName:'Jin'}">
<p>The name is {{ person.lastName }}</p>
</div>
Array
PS: 可以使用
ng-repeat进行迭代<div ng-app="" ng-init="myArr=[0,2,4,6,8]">
<p ng-repeat="element in myArr">
{{ element }}
</p>
</div>
Controllers
我们用controller对一个AngularJS应用进行控制。
用ng-controller定义一个controller,声明所有被它包含的元素都属于这个控制器。
例如:
<div ng-app="" ng-controller="personController">
<h1>{{ person.name +' is a(an) '+person.job }}</h1>
<h1>{{ person.sayHi() }}</h1>
</div>
<script>
function personController($scope) {
$scope.person = [];
$scope.person.name='Kavlez'
$scope.person.job='brogrammer'
$scope.person.sayHi = function(){
return "Hi! I'm "+ $scope.person.name + ", I'm a(an) " + $scope.person.job;
}
}
</script>
当然,我们应该使用更高效的组织方式。
AngularJS支持将Controller定义在其他js文件中,比如上面的例子可以改为:
<div ng-app="" ng-controller="personController">
<h1>{{ person.name +' is a(an) '+person.job }}</h1>
</div>
<script type="text/javascript" src="js/app.js"></script>
Module
到目前为止,定义一个Angular app都用ng-app=""的方式。
可行,但是这个app下的变量和函数都是global的,而且会造成controller污染(pollute)。
而通常,我们用module把app组织起来。
我们可以通过ng-app="名称"或angular.modele()来声明一个module。
该方法有两个参数:
- 模块的名称
- 依赖列表
比如,之前的例子可以改为:
<div ng-app="myApp" ng-controller="fighterController">
<script>
var myApp = angular.module("myApp",[]);
myApp.controller("fighterController", function($scope) {
//..
}
</script>
</div>
如果将app和controller放到两个文件分别定义,则:
<div ng-app="myApp" ng-controller="fighterController">
<script src="myApp.js"></script>
<script src="myAppControllers.js"></script>
</div>
myApp.js:
var myApp = angular.module("myApp",[]);
myAppControllers.js:
myApp.controller("fighterController", function($scope) {
//..
}
Filter
这个东西可以加在表达式里面,改变表达式的输出格式。
我们可以用以下Filters:
| Filter | Description |
|---|---|
| uppercase | 转大写 |
| lowercase | 转小写 |
| currency | 转货币格式 |
| orderBy | 按指定属性排序 |
| filter | 按指定关键字进行过滤 |
前3种可以直接用在表达式中,比如:
{{name | uppercase}}
{{name | lowercase}}
{{total | currency}}
filter和orderBy通常用于数组:
<div ng-app="" ng-controller="fighterController">
<input ng-model="search"/>
<ul>
<li ng-repeat="f in fighters|filter:search">
{{ f }}
</li>
</ul>
<script>
function fighterController($scope) {
$scope.fighters = [
{name:'Ryu',country:'Japan'},
{name:'Ken',country:'USA'},
{name:'Chun Li',country:'China'},
{name:'GuiLe',country:'USA'},
{name:'Zangief',country:'Russia'}
];
}
</script>
</div>
当然,数据不会这样放在一个controller里。
我们可以通过$http来请求数据并进行绑定。
上面的例子可以改为:
function fighterController($scope,$http) {
var url = '请求地址';
$http.get(url).success(function(response) {
$scope.fighters = response;
})
}
AngularJS - 快速入门的更多相关文章
- AngularJS快速入门指南20:快速参考
thead>tr>th, table.reference>tbody>tr>th, table.reference>tfoot>tr>th, table ...
- AngularJS快速入门指南19:示例代码
本文给出的大部分示例都可以直接运行,通过点击运行按钮来查看结果,同时支持在线编辑代码. <div ng-app=""> <p>Name: <input ...
- AngularJS快速入门指南18:Application
是时候创建一个真正的AngularJS单页面应用程序了(SPA). 一个AngularJS应用程序示例 你已经了解了足够多的内容来创建第一个AngularJS应用程序: My Note Save Cl ...
- AngularJS快速入门指南17:Includes
使用AngularJS,你可以在HTML中包含其它的HTML文件. 在HTML中包含其它HTML文件? 当前的HTML文档还不支持该功能.不过W3C建议在后续的HTML版本中增加HTML import ...
- AngularJS快速入门指南16:Bootstrap
thead>tr>th, table.reference>tbody>tr>th, table.reference>tfoot>tr>th, table ...
- AngularJS快速入门指南15:API
thead>tr>th, table.reference>tbody>tr>th, table.reference>tfoot>tr>th, table ...
- AngularJS快速入门指南14:数据验证
thead>tr>th, table.reference>tbody>tr>th, table.reference>tfoot>tr>th, table ...
- AngularJS快速入门指南13:表单
一个AngularJS表单是一组输入型控件的集合. HTML控件 HTML输入型标签标包括: input标签 select标签 button标签 textarea标签 HTML表单 HTML表单将各种 ...
- AngularJS快速入门指南12:模块
AngularJS模块定义了一个application. 模块是一个application中不同部分的容器. application中的所有控制器都应该属于一个模块. 带有一个控制器的模块 下面这个a ...
- AngularJS快速入门指南11:事件
AngularJS拥有自己的HTML事件指令. ng-click指令 ng-click指令定义了AngularJS的click事件. <div ng-app="" ng-co ...
随机推荐
- php 利用activeMq+stomp实现消息队列
php 利用activeMq+stomp实现消息队列 一.activeMq概述 ActiveMQ 是Apache出品,最流行的,能力强劲的开源消息总线.ActiveMQ 是一个完全支持JMS1.1和J ...
- On Perseverance
Brothers,I dont consider that I have made it my own.But one thing I do:forgetting what lies behind a ...
- Openstack-Ceilometer-SNMP的使用
1. 物理服务器配置 1.1安装 #yum install -y net-snmp net-snmp-utils 1.2 配置 复制[附件]中snmpd.conf文件到/etc/snmp/目 ...
- calc 多项式计算 (STL版和非STL版) -SilverN
计算(calc.cpp) [问题描述] 小明在你的帮助下,破密了Ferrari设的密码门,正要往前走,突然又出现了一个密码门,门上有一个算式,其中只有“(”,“)”,“0-9”,“+”,“-”,“*” ...
- LeetCode题解-----Median of Two Sorted Arrays
题目描述: There are two sorted arrays nums1 and nums2 of size m and n respectively. Find the median of t ...
- java四舍五入的取舍
一.保留2位小数,且四舍五入 String re = new java.text.DecimalFormat("#.##").format(3.14555); 结果:3.15 二. ...
- 怎样用ZBrush快速雕刻皮肤纹理
今天的ZBrush教程我们将对利用基础笔刷制作出的“亡灵僵尸”头部模型进行皮肤纹理的处理,主要用到了Layers 3D图层和Alpha笔触类型添加皮肤纹理. 详细的视频教程地址可前往:http://w ...
- 边工作边刷题:70天一遍leetcode: day 85-1
Inorder Successor in BST 要点:这题要注意的是如果不是BST,没法从树结构上从root向那边找p,只能遍历.而根据BST,可以只走正确方向 如果不检查right子树,可以从ro ...
- js验证表单
在日常生活中,对于上班时间比较灵活的单位来说,如何能够及时.准确地令公司员工了解自己的上班时间是一个棘手的问题.公司管理人员不会一个挨一个地打电话通知,难免总有员工会弄错自己的上班时间.这样,可以求助 ...
- UESTC 882 冬马党 --状压DP
定义:dp[i][j]为状态为j时,第i行符合条件的状态数 转移方程:dp[i][j] += dp[i-1][t] //t为上一行状态,与当前行不冲突. 从第一行开始向下枚举,每次枚举当前行的状态 ...