当前位置:   article > 正文

AngularJS 入门1-基础_angularjs基础

angularjs基础

AngularJS 入门1-基础

 

 1.简介及使用方法

AngularJS 可以干什么?

答:AngularJS 能够非常容易的将inputselectbuttontextarea的内容提取并应用到HTML中,即解决静态网页技术在构建动态应用上的不足。AngularJS是为了克服HTML在构建应用上的不足而设计的。

没有AngularJS 时,我们使用以下技术来实现HTML的动态效果:

  类库 - 类库是一些函数的集合,它能帮助你写WEB应用。起主导作用的是你的代码,由你来决定何时使用类库。类库有:jQuery

  框架 - 框架是一种特殊的、已经实现了的WEB应用,你只需要对它填充具体的业务逻辑。这里框架是起主导作用的,由它来根据具体的应用逻辑来调用你的代码。框架有:knockoutsproutcore等。

 

AngularJS 的使用方法

可通过 script 标签添加到网页中:

<script src="http://cdn.static.runoob.com/libs/angular.js/1.4.6/angular.min.js"></script>

 

2.一个最简单的AngularJS 实例

  1. <div ng-app="">
  2. <p>名字 : <input type="text" ng-model="name"></p>
  3. <h1>Hello {{name}}</h1>
  4. </div>

1ng-app 指令定义一个 AngularJS 应用程序。因为只有一个ng-app,故未命名。

2ng-model 指令把元素值(比如输入域的值)绑定到应用程序。

3{{name}}AngularJS 表达式,把数据绑定到 HTML

 


3.表达式

AngularJS 表达式写在双大括号内:{{ expression }}

AngularJS 将在表达式书写的位置"输出"数据。

AngularJS 表达式把数据绑定到 HTML,这与 ng-bind 指令有异曲同工之妙。

AngularJS 表达式 很像 JavaScript 表达式:它们可以包含文字、运算符和变量。

实例

<div ng-app="">

     <p>我的第一个表达式: {{ 5 + 5 }}</p>

</div>

<div ng-app="">

     <p>我的第一个表达式: <span ng-bind="5+5"></span></p>

</div>

<div ng-app="" ng-init="quantity=1;cost=5">

<p>总价: {{ quantity * cost }}</p>

</div>

<div ng-app="" ng-init="quantity=1;cost=5">

<p>总价: <span ng-bind="quantity * cost"></span></p>

</div>

<div ng-app="" ng-init="firstName='John';lastName='Doe'">

<p>姓名: {{ firstName + " " + lastName }}</p>

</div>

<div ng-app="" ng-init="firstName='John';lastName='Doe'">

<p>姓名: <span ng-bind="firstName + ' ' + lastName"></span></p>    

</div>

<div ng-app="" ng-init="person={firstName:'John',lastName:'Doe'}">   

<p>姓为 {{ person.lastName }}</p>

</div>

<div ng-app="" ng-init="person={firstName:'John',lastName:'Doe'}">

<p>姓为 <span ng-bind="person.lastName"></span></p>

</div>

<div ng-app="" ng-init="points=[1,15,19,2,40]">

<p>第三个值为 {{ points[2] }}</p>

</div>

<div ng-app="" ng-init="points=[1,15,19,2,40]">

<p>第三个值为 <span ng-bind="points[2]"></span></p>

</div>

 

4.AngularJS 指令

AngularJS 指令是以 ng 作为前缀的 HTML 属性。

AngularJS 通过被称为 指令 的新属性来扩展 HTML

AngularJS 通过内置的指令来为应用添加功能。

AngularJS 允许你自定义指令。

指令                                 

描述

ng-app

定义应用程序的根元素。

ng-bind

绑定 HTML 元素到应用程序数据

ng-bind-html

绑定 HTML 元素的 innerHTML 到应用程序数据,并移除 HTML 字符串中危险字符         

ng-bind-template

规定要使用模板替换的文本内容

ng-blur

规定 blur 事件的行为

ng-change

规定在内容改变时要执行的表达式

ng-checked

规定元素是否被选中

ng-class

指定 HTML 元素使用的 CSS

ng-class-even

类似 ng-class,但只在偶数行起作用

ng-class-odd

类似 ng-class,但只在奇数行起作用

ng-click

定义元素被点击时的行为

ng-cloak

在应用正要加载时防止其闪烁

ng-controller

定义应用的控制器对象

ng-copy

规定拷贝事件的行为

ng-csp

修改内容的安全策略

ng-cut

规定剪切事件的行为

ng-dblclick

规定双击事件的行为

ng-disabled

规定一个元素是否被禁用

ng-focus

规定聚焦事件的行为

ng-form

指定 HTML 表单继承控制器表单

ng-hide

隐藏或显示 HTML 元素

ng-href

the <a> 元素指定链接

ng-if

如果条件为 false 移除 HTML 元素

ng-include

在应用中包含 HTML 文件

ng-init

定义应用的初始化值,

通常情况下,不使用 ng-init。您将使用一个控制器或模块来代替它。

ng-jq

定义应用必须使用到的库,如:jQuery

ng-keydown

规定按下按键事件的行为

ng-keypress

规定按下按键事件的行为

ng-keyup

规定松开按键事件的行为

ng-list

将文本转换为列表 (数组)

ng-model

绑定 HTML 控制器的值到应用数据

ng-model-options

规定如何更新模型

ng-mousedown

规定按下鼠标按键时的行为

ng-mouseenter

规定鼠标指针穿过元素时的行为

ng-mouseleave

规定鼠标指针离开元素时的行为

ng-mousemove

规定鼠标指针在指定的元素中移动时的行为

ng-mouseover

规定鼠标指针位于元素上方时的行为

ng-mouseup

规定当在元素上松开鼠标按钮时的行为

ng-non-bindable

规定元素或子元素不能绑定数据

ng-open

指定元素的 open 属性

ng-options

<select> 列表中指定 <options>

ng-paste

规定粘贴事件的行为

ng-pluralize

根据本地化规则显示信息

ng-readonly

指定元素的 readonly 属性

ng-repeat

定义集合中每项数据的模板

ng-selected

指定元素的 selected 属性

ng-show

显示或隐藏 HTML 元素

ng-src

指定 <img> 元素的 src 属性

ng-srcset

指定 <img> 元素的 srcset 属性

ng-style

指定元素的 style 属性

ng-submit

规定 onsubmit 事件发生时执行的表达式

ng-switch

规定显示或隐藏子元素的条件

ng-transclude

规定填充的目标位置

ng-value

规定 input 元素的值


ng-repeat 指令会重复一个 HTML 元素:重复 HTML 元素

//范例1

  1. <div ng-app="" ng-init="names=['Jani','Hege','Kai']">
  2. <p>使用 ng-repeat 来循环数组</p>
  3. <ul>
  4. <li ng-repeat="x in names">
  5. {{ x }}
  6. </li>
  7. </ul>
  8. </div>

//范例2

  1. <div ng-app="" ng-init="names=[{name:'Jani',country:'Norway'},{name:'Hege',country:'Sweden'},{name:'Kai',country:'Denmark'}]">
  2. <p>循环对象:</p>
  3. <ul>
  4. <li ng-repeat="x in names">
  5. {{ x.name + ', ' + x.country }}
  6. </li>
  7. </ul>
  8. </div>

 


创建自定义的指令

你可以使用 .directive 函数来添加自定义的指令。

使用驼峰法来命名一个指令, runoobDirective, 但在使用它时需要以 - 分割, runoob-directive:

<script>
var app = angular.module("myApp", []);
app.directive("runoobDirective", function() {
    return {
        template : "<h1>自定义指令!</h1>"
    };
});
</script>

调用指令的方法

元素名        

<runoob-directive></runoob-directive>            

属性

<div runoob-directive></div>

类名

<div class="runoob-directive"></div>

注释

<!-- directive: runoob-directive -->

限制使用

通过添加 restrict 属性,并设置只值为 "A", 来设置指令只能通过属性的方式来调用:

  1. var app = angular.module("myApp", []);
  2. app.directive("runoobDirective", function() {
  3. return {
  4. restrict : "A",
  5. template : "<h1>自定义指令!</h1>"
  6. };
  7. });

restrict 值可以是以下几种,默认值为 EA

作为元素名使用

作为属性使用

作为类名使用

作为注释使用

 

5.AngularJS 模型

AngularJS 由三部分组成:

·View(视图), HTML

·Model(模型), 当前视图中可用的数据,链接视图与控制器的纽带。

·Controller(控制器), JavaScript 函数,可以添加或修改属性。

①ng-model 指令

用于绑定应用程序数据到 HTML 控制器(input, select, textarea)的值。

AngularJS 实例

  1. <div ng-app="myApp" ng-controller="myCtrl">
  2. 名字: <input ng-model="name">
  3. </div>
  4. <script>
  5. var app = angular.module('myApp', []);
  6. app.controller('myCtrl', function($scope) {
  7. $scope.name = "John Doe";
  8. });
  9. </script>

注:数据绑定是双向的,当HTMLinput内容变化时,变量name变化;在<script>中修改name值,反映到HTML中,实现了同步。

②scope(作用域)

scope 是模型,是一个 JavaScript 对象,带有属性和方法,这些属性和方法可以在视图和控制器中使用。

  1. <div ng-app="myApp" ng-controller="myCtrl">
  2. <input ng-model="name">
  3. <h1>{{greeting}}</h1>
  4. <button ng-click='sayHello()'>点我</button>
  5. </div>
  6. <script>
  7. var app = angular.module('myApp', []);
  8. app.controller('myCtrl', function($scope) {
  9. $scope.name = "Runoob"; //用ng-model定义的变量就是scope的属性
  10. $scope.sayHello = function() { //用ng-click定义的函数就是scope的方法
  11. $scope.greeting = 'Hello ' + $scope.name + '!';
  12. };
  13. });
  14. </script>

根作用域 $rootScope

$rootScope 定义的值,可以在各个 controller 中使用。

  1. <script>
  2. var app = angular.module('myApp', []);
  3. app.controller('myCtrl', function($scope, $rootScope) {
  4. $scope.names = ["Emil", "Tobias", "Linus"];
  5. $rootScope.lastname = "Refsnes";
  6. });
  7. </script>


6.AngularJS 控制器

 AngularJS 控制器 控制 AngularJS 应用程序的数据。

AngularJS 实例

  1. <div ng-app="myApp" ng-controller="personCtrl">
  2. 名: <input type="text" ng-model="firstName"><br>
  3. 姓: <input type="text" ng-model="lastName"><br><br>
  4. 姓名: {{fullName()}}
  5. </div>
  6. <script>
  7. var app = angular.module('myApp', []);
  8. app.controller('personCtrl', function($scope) {
  9. $scope.firstName = "John";
  10. $scope.lastName = "Doe";
  11. $scope.fullName = function() {
  12. return $scope.firstName + " " + $scope.lastName;
  13. }
  14. });
  15. </script>

解析:

HTML

①ng-app="myApp" 定义一个AngularJS应用程序,应用程序在 <div> 内运行。

② ng-controller="myCtrl" 定义一个AngularJS控制器。

③{{fullName()}} fullName()是控制器定义的函数(方法)

<script>

创建模块var app = angular.module('myApp', []);

注:AngularJS 模块

·模块定义了一个应用程序。

·模块是不同应用程序的容器。

·控制器通常属于一个模块。

·通过 AngularJS  angular.module 函数来创建模块:
②添加控制器

app.controller('personCtrl', function($scope) {
    $scope.firstName = "John";
    $scope.lastName = "Doe";
    $scope.fullName = function() {
        return $scope.firstName + " " + $scope.lastName;
    }
});

1AngularJS 使用$scope 对象来调用控制器。

2:控制器在作用域中创建了两个属性 ( firstName  lastName )

3:控制器在作用域中创建了一个方法 ( fullName )

 

7.AngularJS 过滤器

过滤器可以使用一个管道字符(|)添加到表达式和指令中。

过滤器                             

描述

currency

格式化数字为货币格式。

{{ 250 | currency }}            // 结果:$250.00

{{ 250 | currency:"RMB " }}  // 结果:RMB 250.00                                                       

lowercase

格式化字符串为小写。

uppercase

格式化字符串为大写。

number

保留小数

{{149016.194 | number:2}}  // 结果:149016.19

{{149016.199 | number:2}}  // 结果:149016.20

limitTo

 

截取

{{"1234567890" | limitTo :6}} // 从前面开始截取6

{{"1234567890" | limitTo:-4}} // 从后面开始截取4

orderBy

根据某个表达式排列数组。

filter

从数组项中选择一个子集。

范例:

注:names是数组

[ {"name":"Alfreds",country":"Germany"} , {"name":"Ana","country":"Mexico"} , {"name":"Moreno","country":"Mexico"} ]

表达式中添加过滤器

<p>姓名为 {{ lastName | uppercase }}</p>

<p>总价 = {{ (quantity * price) | currency }}</p>

向指令添加过滤器

orderBy

:'country' country升序排列

:'-country' country降序排列

:'country':true country降序排列

<li ng-repeat="x in names | orderBy:'country'">
    {{ x.name + ', ' + x.country }}
</li>

filter

:'a'  对数组中name的值和country的值,有字符a的选中    

:'alf' alf的选中

<li ng-repeat="x in names | filter:'a'| orderBy:'country'">       
    {{ (x.name | uppercase) + ', ' + x.country }}
</li>

 

8.ng-disabledng-show

ng-disabled 指令直接绑定应用程序数据到 HTML disabled 属性。

  1. <div ng-app="" ng-init="mySwitch=true">
  2. <button ng-disabled="mySwitch">点我!</button> <br/>
  3. <input type="checkbox" ng-model="mySwitch">按钮 <br/>
  4. {{ mySwitch }}
  5. </div>

 

注:复选框,ng-model=true/false

ng-show 指令隐藏或显示一个 HTML 元素。

  1. <div ng-app="">
  2. <p ng-show="true">我是可见的。</p>
  3. <p ng-show="false">我是不可见的。</p>
  4. </div>
  5. <div ng-app="" ng-init="hour=13">
  6. <p ng-show="hour > 12">我是可见的。</p>
  7. </div>


9.AngularJS 事件

ng-click 指令为例

实例一:

  1. <div ng-app="" ng-controller="myCtrl">
  2. <button ng-click="count = count + 1">点我!</button>
  3. <p>{{ count }}</p>
  4. </div>

实例二:

  1. <div ng-app="myApp" ng-controller="personCtrl">
  2. <button ng-click="toggle()">隐藏/显示</button>
  3. <p ng-hide="myVar">
  4. 名: <input type="text" ng-model="firstName"><br>
  5. 姓名: <input type="text" ng-model="lastName"><br>
  6. Full Name: {{firstName + " " + lastName}}
  7. </p>
  8. </div>
  9. <script>
  10. var app = angular.module('myApp', []);
  11. app.controller('personCtrl', function($scope) {
  12. $scope.firstName = "John",
  13. $scope.lastName = "Doe"
  14. $scope.myVar = false;
  15. $scope.toggle = function() {
  16. $scope.myVar = !$scope.myVar;
  17. };
  18. });

 

10.AngularJS 全局 API

AngularJS 全局 API 用于执行常见任务的 JavaScript 函数集合,如:

比较对象 | 迭代对象 | 转换对象

全局 API 函数使用 angular 对象进行访问。

一些通用的 API 函数     

描述

angular.lowercase()

转换字符串为小写

$scope.x1 = "JOHN";
$scope.x2 = angular.lowercase($scope.x1);                                                

angular.uppercase()

转换字符串为大写

$scope.x1 = "John";
$scope.x2 = angular.uppercase($scope.x1);

angular.isString()

判断给定的对象是否为字符串,如果是返回 true

angular.isNumber()

判断给定的对象是否为数字,如果是返回 true

 

11.AngularJS 包含

使用 AngularJS, 你可以使用 ng-include 指令来包含 HTML 内容:

实例:

  1. <body ng-app="">
  2. <div ng-include="'runoob.htm'"></div>
  3. </body>

runoob.htm 文件代码:

  1. <h1>菜鸟教程</h1>
  2. <p>这是一个被包含的 HTML 页面,使用 ng-include 指令来实现!</p>


ng-include 指令除了可以包含 HTML 文件外,还可以包含 AngularJS 代码

sites.htm 文件代码,含有ng命令:

  1. <table>
  2. <tr ng-repeat="x in names">
  3. <td>{{ x.Name }}</td>
  4. <td>{{ x.Url }}</td>
  5. </tr>
  6. </table>

sites.htm 文件代码,含有js代码:

  1. <div ng-app="myApp" ng-controller="sitesCtrl">
  2. <div ng-include="'sites.htm'"></div>
  3. </div>
  4. <script>
  5. var app = angular.module('myApp', []);
  6. app.controller('sitesCtrl', function($scope, $http) {
  7. $http.get("sites.php").then(function (response) {
  8. $scope.names = response.data.records;
  9. });
  10. });
  11. </script>

 

12.AngularJS 动画

AngularJS 提供了动画效果,可以配合 CSS 使用

使用动画需要引入 angular-animate.min.js 库:

<script src="....../libs/angular.js/1.4.6/angular-animate.min.js"></script>

还需在应用中使用模型 ngAnimate

<body ng-app="ngAnimate">

实例:

  1. <html>
  2. <head>
  3. <meta charset="utf-8">
  4. <style>
  5. div {
  6. transition: all linear 0.5s;
  7. background-color: lightblue;
  8. height: 100px;
  9. width: 100%;
  10. position: relative;
  11. top: 0;
  12. left: 0;
  13. }
  14. .ng-hide {
  15. height: 0;
  16. width: 0;
  17. background-color: transparent;
  18. top:-200px;
  19. left: 200px;
  20. }
  21. </style>
  22. <script src="http://cdn.static.runoob.com/libs/angular.js/1.4.6/angular.min.js"></script>
  23. <script src="http://cdn.static.runoob.com/libs/angular.js/1.4.6/angular-animate.min.js"></script>
  24. </head>
  25. <body ng-app="ngAnimate">
  26. <h1>隐藏 DIV: <input type="checkbox" ng-model="myCheck"></h1>
  27. <div ng-hide="myCheck"></div>
  28. </body>
  29. </html>

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/你好赵伟/article/detail/696294
推荐阅读
相关标签
  

闽ICP备14008679号