【AngularJS】 # AngularJS入门

【AngularJS】 # AngularJS入门

大家好,又见面了,我是你们的朋友全栈君。

1. AngularJS简介AngularJS是一个JavaScript框架,用js编写的库

代码语言:javascript复制

1.1. AngularJS 扩展了 HTMLAngularJS 通过 ng-directives扩展了HTML

ng-app 指令定义一个 AngularJS 应用程序。 若不声明,将直接显示表达式。

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

ng-bind 指令把应用程序数据绑定到 HTML 视图。一般使用 **{

{ ng-model 的值 }}**获取数据

代码语言:javascript复制

名字 :

Hello {

{name}}

当网页加载完毕,AngularJS 自动开启。

2. AngularJS表达式AngularJS 使用 表达式 把数据绑定到 HTML

使用{

{ 表达式 }}进行数据的输出

表达式可以包含字符,操作符,变量表达式可以写在HTML中不支持条件判断,循环及异常支持过滤器代码语言:javascript复制

我的第一个表达式: {

{ 5 + 5 }}

2.1. AngularJS数字类似于JavaScript的数字

代码语言:javascript复制

总价: {

{ quantity * cost }}

2.2. AngularJS字符串类似于JavaScript的字符串

代码语言:javascript复制

姓名: {

{ firstName + " " + lastName }}

2.3. AngularJS 对象类似于JavaScript的对象

代码语言:javascript复制

姓为 {

{ person.lastName }}

2.4. AngularJS 数组类似于JavaScript的数组

代码语言:javascript复制

第三个值为 {

{ points[2] }}

3. AngularJS指令通过 指令 来扩展HTML。通过内置的指令来为应用添加功能,可以自定义指令。

指令带有前缀 ng- ng-app指令用来初始化一个 AngularJS应用程序

3.1. 数据绑定表达式**{

{ firstName }}** 通过 ng-model=“firstName” 进行同步。

代码语言:javascript复制

{

{ firstName }}

3.2. 重复HTML元素ng-repeat指令:重复一个HTML元素,用作循环

代码语言:javascript复制

  • {

    { i }}

用在一个对象数组上

代码语言:javascript复制

  • {

    { i.name + "," + i.country }}

3.3. ng-app指令在网页加载完毕时自动初始化一个 AngularJS应用程序通过一个值**(ng-app=“myCode”)**连接到代码模块3.4. ng-init指令为 AngularJS 应用程序定义了 初始值。一般不使用

3.5. ng-model 指令代码语言:javascript复制/// ng-model="name" 声明一个name变量

/// $scope.name 使用name变量绑定应用程序数据到 HTML 控制器(input, select, textarea)的值为应用程序数据提供类型验证(number、email、required)为应用程序数据提供状态(invalid、dirty、touched、error)为 HTML 元素提供 CSS 类绑定 HTML 元素到 HTML 表单将输入域的值($scope)与 AngularJS 创建的变量绑定

代码语言:javascript复制

名字:

双向绑定,在修改输入域的值时, AngularJS 属性的值也将修改

代码语言:javascript复制

你输入了: {

{ name }}

验证用户输入 ng-show

代码语言:javascript复制

Email:

不是一个合法的邮箱地址

为应用数据提供状态值 (invalid, dirty, touched, error)

代码语言:javascript复制

Email:

状态

{

{ myForm.myAddr.$valid }} 如果输入的值是合法的则为 true

{

{ myForm.myAddr.$dirty }} 如果值改变则为 true

{

{ myForm.myAddr.$touched }} 如果通过触屏点击则为 true

{

{ myForm.myAddr.$error.email }} 如果输入的Email的值非法则为 true

CSS类,基于它们的状态为 HTML 元素提供了 CSS 类

代码语言:javascript复制

输入你的名字:

ng-empty 为空的时候

ng-not-empty 不为空的时候

ng-touched 控件已失去焦点

ng-untouched 控件未失去焦点

ng-valid 验证通过

ng-invalid 验证失败

ng-dirty 值改变的时候

ng-pending 任何为满足 $asyncValidators 的情况

ng-pristine 控件为初始状态3.6. ng-repeat指令对于集合中(数组中)的每个项会 克隆一次 HTML 元素。用于循环输出

3.7. 创建自定义指令声明:使用 .directive 函数来添加自定义的指令,声明时使用 驼峰命名法

代码语言:javascript复制

调用:调用时使用 – 分割

元素名:

属性:

类名:

必须设置 restrict 的值为 “C” 才能通过类名来调用指令。

代码语言:javascript复制注释:

添加 replace 属性,使注释可见

设置 restrict 的值为 “M”

代码语言:javascript复制4. AngularJS Scope(作用域)Scope(作用域) 是应用在 HTML (视图) 和 JavaScript (控制器)之间的纽带。

4.1. 使用Scope在AngularJS创建控制器时,可以将$scope对象当作一个参数传递

代码语言:javascript复制

{

{ carName }}

4.2. Scope概述AngularJS应用组成如下:

View(视图),即HTML scope的属性和方法Model(模型),当前HTML中可用的数据 scopeController(控制器),JavaScript函数,可以添加或修改属性 scope的属性和方法代码语言:javascript复制

{

{ greeting }}

4.3. Scope作用范围根作用域:$rootScope

作用在 ng-app 指令包含的所有HTML元素中用 $rootScope 定义的值,可以在各个controller中使用代码语言:javascript复制

{

{ lastName }} 家族成员:

  • {

    {x}} {

    {lastname}}

5. AngularJS控制器ng-controller 指令定义了应用程序控制器。

控制器是 JavaScript 对象,由标准的 JavaScript 对象的构造函数 创建。

5.1. 控制器方法代码语言:javascript复制

姓:

名:

姓名:{

{ fullName() }}

5.2. 外部文件中的控制器将 6. AngularJS 过滤器过滤器可以使用一个**管道字符(|)**添加到表达式和指令中。

6.1. 过滤器分类currency: 格式化数字为货币格式filter: 从数组项中选择一个子集lowercase: 格式化字符串为小写orderBy: 根据某个表达式排列数组uppercase: 格式化字符串为大写6.2. 表达式中添加过滤器将字符串格式化为大写 小写

代码语言:javascript复制

姓名为:{

{ fullName | uppercase }}

将数字格式转化为货币格式

代码语言:javascript复制

总价:{

{ (quantity * price) | currency }}

6.3. 向指令添加过滤器根据表达式排列数组 orderBy:” “

代码语言:javascript复制

  • {

    { x.name + "," + x.country }}

过滤输入 filter:ng-model的名称 符合过滤规则的显示,不符合的不显示

代码语言:javascript复制

输入过滤:

  • {

    { (x.name | uppercase) + "," + x.country }}

6.4. 自定义过滤器自定义一个过滤器reverse,将字符串反转 app.filter("过滤器名称", function)

代码语言:javascript复制

姓名:{

{ msg | reverse }}

7. AngularJS 服务(service)在 AngularJS 中,服务是一个函数或对象,可在 AngularJS 应用中使用。

7.1. $location服务返回当前页面的URL地址

代码语言:javascript复制7.2. $http服务服务向服务器发送请求,应用响应服务器传送过来的数据

代码语言:javascript复制7.3. $timeout 服务两秒后显示信息

代码语言:javascript复制7.4. $interval 服务每隔一秒显示信息

代码语言:javascript复制7.5. 创建自定义服务创建自定义服务,用于转换16进制数

代码语言:javascript复制

{

{ hex }}

7.6. 在过滤器中使用服务(自定义)代码语言:javascript复制

  • {

    {x | myFormat}}

8. AngularJS 选择框(select)AngularJS 可以使用数组或对象创建一个下拉列表选项。

8.1. 使用 ng-options 创建选择框创建一个下拉列表,列表项通过对象和数组循环输出

代码语言:javascript复制

8.2. 数据源为数组代码语言:javascript复制

你选择的是:{

{ selSite.site }}

网址为:{

{ selSite.url }}

8.3. 数据源为对象x 为键(key) y 为值(value)

代码语言:javascript复制

你选择的是: {

{ selCar.brand }}

型号为: {

{ selCar.model }}

颜色为: {

{ selCar.color }}

9. AngularJS表格ng-repeat 指令可以完美的显示表格。

代码语言:javascript复制

{

{ $index+1 }}

{

{ x.Name }}

{

{ x.Country | uppercase }}

10. AngularJS SQL使用 $http 从后台请求数据,后端代码可以访问数据库,然后将结果以 json 的形式返回

代码语言:javascript复制11. AngularJS HTML DOMAngularJS 为 HTML DOM 元素的 属性 提供了绑定应用数据的指令。

11.1. ng-disabled 指令直接绑定应用程序数据到 HTML 的 disabled 属性。 案例:同意协议才能下一步

代码语言:javascript复制

我已阅读并同意

ng-disabled 指令绑定应用程序数据 "mySelected" 到 HTML 的 disabled 属性。

ng-model 指令绑定 "mySelected" 到 HTML input checkbox 元素的内容(value)。11.2. ng-show指令隐藏或显示一个 HTML 元素

代码语言:javascript复制

我是可见的。

我是不可见的。

我是可见的。

11.3. ng-hide指令隐藏或显示 HTML 元素。

代码语言:javascript复制

我是不可见的。

我是可见的。

12. AngularJS事件12.1. ng-click 点击事件代码语言:javascript复制

{

{ count }}

13. AngularJS 表单13.1. 输入框 使用 ng-model 进行数据绑定

13.2. 复选框(Checkbox)checkboc的值为 true 或 false ,可以使用 ng-model 指令绑定,值可以用于应用中

代码语言:javascript复制

选中复选框,显示标题:

My Header

13.3. 单选框ng-model 结合 ng-switch 指令,根据 单选按钮的选择结果 显示或隐藏HTML区域

代码语言:javascript复制

选择一个选项:

Dogs

Tutorials

Cars

Dogs

Welcome to a world of dogs.

Tutorials

Learn from examples.

Cars

Read about cars.

13.4. 下拉菜单使用

{

{ selecteName.name }}

{

{ selecteName.msg }}

13.5. 表单实例novalidate 属性是在 HTML5 中新增的。禁用了使用浏览器的默认验证。

代码语言:javascript复制

First Name:

Last Name:

form = {

{ user }}

master = {

{ master }}

14. AngularJS 输入验证form的name.input的name.$dirty 表单有填写记录$valid 字段内容合法的$invalid 字段内容是非法的$pristine 表单没有填写记录基本的表单验证实例,novalidate 用于禁用浏览器默认的验证

代码语言:javascript复制

用户名:

用户名必须填写

邮箱:

邮箱是必须的。

非法的邮箱。

15. AngularJS API复制对象 angular.copy()

代码语言:javascript复制//原型

angular.copy(source, [destination]);

var obj = {

a: 1};

var obj2 = angular.copy(obj)比较对象 angular.equals()

代码语言:javascript复制var obj1 = {

a: 1};

var obj2 = obj1;

// 引用一致,则相等

console.log(angular.equals(obj1, obj2)); // true遍历对象或者数组 angular.forEach()

代码语言:javascript复制//原型

angular.forEach(obj, iterator, [context]);

/// 对象

var values = {

name: 'misko', gender: 'male'};

angular.forEach(values, function (value, key) {

console.log(key + ' = ' + value);

});

/// 数组

var arr = ['misko', 'male'];

angular.forEach(arr, function (value, i) {

console.log(i + ' = ' + value);

});将对象,数组,日期,字符串,数字转换为 json 字符串 angular.toJson()

代码语言:javascript复制//原型

angular.toJson(obj, pretty); //pretty为美化输出格式用

var obj = {

p1: 1, p2: true, p3: '2'};

var jsonString = angular.toJson(obj);

console.log(jsonString);将 JSON 字符串转换为 JSON 对象 angular.fromJson()

代码语言:javascript复制//原型

angular.fromJson(/*string*/ jsonString)

var jsonString = '{"p1": "xx", "p2": 1, "p3": true}';

var jsonObj = angular.fromJson(jsonString);

console.log(jsonObj);16. AngularJS Bootstrap代码语言:javascript复制

具体需要学习bootstrap

17. AngularJS 跨域包含使用 ng-include 包含其他文件,使用 $sceDelegateProvider 设置跨域包含

代码语言:javascript复制

18. AngularJS 依赖注入依赖注入(DI):是一种软件设计模式,在这种模式下,一个或更多的依赖(或服务)被注入(或者通过引用传递)到一个独立的对象(或客户端)中,然后成为了该客户端状态的一部分。

==》 没事你不要来找我,有事我会去找你。

18.1. factory组件factory 是一个函数用于 返回 值。在 service 和 controller 需要时创建。

代码语言:javascript复制var app = angular.module("mainApp", []);

// 创建 factory "MathService" 用于两数的乘积

app.factory("MathService", function(){

var myFactory = {

};

myFactory.multiply = function(a, b){

return a * b

}

return myFactory;

});

// 在 service 中注入 factory "MathService"

mainApp.service('CalcService', function(MathService){ 18.2. value组件用于向控制器传递值(配置阶段)

代码语言:javascript复制var app = angular.module("mainApp", []);

// 创建 value 对象 "defaultInput" 并传递数据

app.value("defaultInput", 5);

// 将 "defaultInput" 注入到控制器

app.controller('CalcController', function($scope, CalcService, defaultInput) { 18.3. provider组件AngularJS 中通过 provider 创建一个 **service、factory **等(配置阶段)。

Provider 中提供了一个 factory 方法 get(),它用于返回 value/service/factory。

代码语言:javascript复制var app = angular.module("mainApp", []);

// 使用 provider 创建 service 定义一个方法用于计算两数乘积

app.config(function($provide) {

$provide.provider('MathService', function() {

this.$get = function() {

var factory = {

};

factory.multiply = function(a, b) {

return a * b;

}

return factory;

};

});

});18.4. 具体实例使用 factory value 组件

代码语言:javascript复制

输入一个数字:

结果: {

{ res }}

使用 provider 组件

代码语言:javascript复制/// 使用 app.config 替换了 app.factory

app.config(function($provide) {

$provide.provider('MathService', function() {

this.$get = function() {

var factory = {

};

factory.multiply = function(a, b) {

return a * b;

}

return factory;

};

});

});19.AngularJS 路由通过 AngularJS 可以实现 多视图的单页 Web 应用(single page web application,SPA)。

AngularJS 路由通过 #! + 标记 区分不同的逻辑页面并将不同的页面绑定到对应的控制器上。

创建了两个 URL: /first 和 /second。每个 URL 都有对应的视图和控制器。

代码语言:javascript复制

函数$routeProvider.when('URL', 路由配置对象)

路由配置对象

代码语言:javascript复制$routeProvider.when(url, {

template: 简单的HTML内容

templateUrl: 插入HTML模板文件

controller: string, function 或 array

controllerAs: 为controller指定别名

redirectTo: 重定向的地址

resolve: 指定当前controller所依赖的其他模块

});实例

代码语言:javascript复制

20. AngularJS 实例代码语言:javascript复制

我的备忘录


{

{ x.todoText }}

发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/164209.html原文链接:https://javaforall.cn

相关推荐

家庭用什么牌子的血压计好?九安的怎么样?6大热门型号对比分析
如何看待Sol君宣布退出直播圈?
365bet赌城

如何看待Sol君宣布退出直播圈?

📅 12-13 👁️ 5744
泰国人口贩卖的现状是怎样的?
365bet赌城

泰国人口贩卖的现状是怎样的?

📅 10-19 👁️ 1301
许可证办理费用:全面解读申请许可证需要多少钱
揭秘东莞桑拿消费真相:价格透明,服务揭秘
Uber Eats 優惠序號和 $0 外送費
亚洲365

Uber Eats 優惠序號和 $0 外送費

📅 01-06 👁️ 5079