刚开始接触时总是去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。
该方法有两个参数:

  1. 模块的名称
  2. 依赖列表

比如,之前的例子可以改为:

<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 - 快速入门的更多相关文章

  1. AngularJS快速入门指南20:快速参考

    thead>tr>th, table.reference>tbody>tr>th, table.reference>tfoot>tr>th, table ...

  2. AngularJS快速入门指南19:示例代码

    本文给出的大部分示例都可以直接运行,通过点击运行按钮来查看结果,同时支持在线编辑代码. <div ng-app=""> <p>Name: <input ...

  3. AngularJS快速入门指南18:Application

    是时候创建一个真正的AngularJS单页面应用程序了(SPA). 一个AngularJS应用程序示例 你已经了解了足够多的内容来创建第一个AngularJS应用程序: My Note Save Cl ...

  4. AngularJS快速入门指南17:Includes

    使用AngularJS,你可以在HTML中包含其它的HTML文件. 在HTML中包含其它HTML文件? 当前的HTML文档还不支持该功能.不过W3C建议在后续的HTML版本中增加HTML import ...

  5. AngularJS快速入门指南16:Bootstrap

    thead>tr>th, table.reference>tbody>tr>th, table.reference>tfoot>tr>th, table ...

  6. AngularJS快速入门指南15:API

    thead>tr>th, table.reference>tbody>tr>th, table.reference>tfoot>tr>th, table ...

  7. AngularJS快速入门指南14:数据验证

    thead>tr>th, table.reference>tbody>tr>th, table.reference>tfoot>tr>th, table ...

  8. AngularJS快速入门指南13:表单

    一个AngularJS表单是一组输入型控件的集合. HTML控件 HTML输入型标签标包括: input标签 select标签 button标签 textarea标签 HTML表单 HTML表单将各种 ...

  9. AngularJS快速入门指南12:模块

    AngularJS模块定义了一个application. 模块是一个application中不同部分的容器. application中的所有控制器都应该属于一个模块. 带有一个控制器的模块 下面这个a ...

  10. AngularJS快速入门指南11:事件

    AngularJS拥有自己的HTML事件指令. ng-click指令 ng-click指令定义了AngularJS的click事件. <div ng-app="" ng-co ...

随机推荐

  1. Linux搭建DNS服务器

    Linux系统信息: Version: Centos 6.6 Ip address:10.0.0.104 Hostname: extmail.com 配置系统 hostname Vim /etc/sy ...

  2. O(N)时间的排序

    题目:某公司有几万名员工,请完成一个时间复杂度为O(n)的算法对该公司员工的年龄作排序,可使用O(1)的辅助空间. 要注意分析题目,一般排序要么是O(n^2),要么是O(nlogn).但这里题目特别强 ...

  3. mybatis的#{}和${}的区别以及order by注入问题

    前言略,直奔主题.. #{}相当于jdbc中的preparedstatement ${}是输出变量的值 你可能说不明所以,不要紧我们看2段代码: String sql = "select * ...

  4. eclipse菜单解释及中英对照《二》

    上篇文章主要介绍了eclipse中每个大的标题下的中英文及其用法. 感谢http://blog.csdn.net/li_jinjian2005/article/details/2831641这个博主. ...

  5. Hibernate之Query接口的uniqueResult()方法

    如果查询返回多个值用list()方法 public void testQuery(){ Configuration config = new Configuration().configure(); ...

  6. JMeter学习(五)检查点

    JMeter也有像LR中的检查点,本篇就来介绍下JMeter的检查点如何去实现. JMeter里面的检查点通过添加断言来完成. 检查点:上一章讲到,我们对用户名和密码进行了参数化,那么怎样来判断jme ...

  7. Oracle 排序中使用nulls first 或者nulls last 语法

    -原理 Nulls first和nulls last是Oracle Order by支持的语法 如果Order by 中指定了表达式Nulls first则表示null值的记录将排在最前(不管是asc ...

  8. easyui 的 DataGrid View 使用

    easyui真是后台人员的宝呀,让不会前台的程序员,不用再用那些自己看着都恶心的表格了! 今天来说说easyui datagrid 的 数据表格详细展示表格,这个有趣多了! 先上图 然后是代码 $(' ...

  9. Oracle中sequence的使用方法

    在Oracle数据库中,sequence等同于序列号,每次取的时候sequence会自动增加,一般会作用于需要按序列号排序的地方. 1.Create Sequence (注释:你需要有CREATE S ...

  10. JQuery[一] 中如何选中$(this)下面的子元素

    <ul> li><span></span></li> li><span></span></li> < ...