angular入门

angularjs介绍

官网https://angularjs.org/

-是什么?

--为动态Web应用设计的结构框架
---AngularJS 是一个为动态WEB应用设计的结构框架,提供给大家一种新的开发应用方式,这种方式可以让你扩展HTML的语法,以弥补在构建动态WEB应用时静态文本的不足,从而在web应用程序中使用HTML声明动态内容。

核心功能

-双向数据绑定

实现了model与view完全绑定在一起,model变化,view也变化,反之亦然

-模板

模板相当于HTML文件被浏览器解析到DOM中,AngularJS遍历这些DOM,AngularJS把模板当做DOM来操作,去生成一些指令来完成对View的数据绑定

-MVVM

吸收了传统的MVC设计模式,但又不是传统意义上的MVC,更接近于MVVM(Model-View-ViewModel)

-依赖注入

拥有内建的依赖注入子系统,可以帮助开发人员更容易的开发,理解和测试应用

-指令

可以用来创建自定义的标签,也可以用来装饰元素,或者操作DOM属性

为什么要使用

前后端分离,后端只提供数据接口,路由,模板渲染等在前端完成
HTML和JS分离,展示和逻辑分离
减少JS代码,减少DOM元素查找,事件绑定等代码
适合API开发

使用前准备

1.官网下载文件,拷贝到工程中
2.使用CDN

https://ajax.googleapis.com/ajax/libs/angularjs/1.5.7/angular.min.js
http://apps.bdimg.com/libs/angular.js/1.4.6/angular.min.js

常用指令

1.介绍

AngularJS有一套 完整的、可扩展的、用来帮助web应用开发的指令集

使得HTML可以转变成“特定领域语言(DSL)”,用来扩展浏览器能力的技术之一,在DOM编译期间,和HTML关联着的指令会被检测到,并且被执行,这使指令可以为DOM指定行为,或者改变它

指令就是HTML的新属性,来扩展HTML,带有前缀”ng-“

绑定在DOM元素上的函数,可以调用方法、定义行为、绑定controller以及$scope对象、操作DOM等等

当关联的HTML结构进入编译阶段时应该执行的操作

本质上只是一个当编译器编译到相关DOM时需要执行的函数,可以卸载元素的名称里,属性里,CSS类名里,注释里

AngularJS的动态性和响应能力,都要归功于指令属性,常用的有: ng-app / ng-init / ng-model / ng-bind / ng-repeat

2.ng-app

<div ng-app="">
            
</div>

一个AngularJS应用程序初始化完成了标记作用域,
也就是div元素就是AngularJS应用程序的所有者,
在它里面的指令也就会被AngularJS编译器所编译、解析了

表明一个AngularJS应用程序
初始化AngularJS程序
拥有该指令的标签为根节点,开始编译其中的DOM

3.ng-init

初始化作用

//变量
<div ng-app="" ng-init="name = 'lidaze'; age = 18">
 {{ name + " " + age }}
</div>
//对象
<div ng-app="" ng-init="person = {name: 'lidaze', age: 18}">
 {{ person.name }}
</div>
//数组
<div ng-app="" ng-init="arr = [12, 23, 56, 34]">
 {{ arr[0] }}
</div>
。。。

使用一个控制器或模块来代替它

4.ng-model

使用ng-model指令可以把应用程序数据绑定到HTML元素,实现model和view的双向绑定

<div ng-app="">
 <input type="text" ng-model="name">
 <h1>{{ name }}</h1>
</div>

原理

a. angular加载完成之后会启动,首先找ng-app
b. 找到后认为ng-app里面的所有内容都归angular来管
c. 找子层标签里所有指令,然后就可以找到ng-model
d. 找到会生成数据模型,然后挂在根作用域上
e. 然后下面的所有标签都可以读取ng-model的值

5.表达式

在 {{ }} 里面可以写我们想写的东西
{{ 20 + 20 }}
{{ num1 + num2 }}
{{ firstName + " " + lastName }}

6.ng-bind

和 {{}} 类似

<div ng-app="" ng-init="firstName = '李'; lastName = '泽'">
     <input type="text" ng-model="firstName">
     <input type="text" ng-model="lastName">
     <!-- <h1>{{ firstName + " " + lastName }}</h1> -->
     <h1 ng-bind="firstName + ' ' + lastName"></h1>
</div>

和 {{}} 区别

ng-bind在angular解析渲染完毕后将数据显示出来
在使用花括号语法时,因为浏览器需要首先加载页面,渲染它,然后AngularJS才能把它解析成你期望被看到的内容,所以对于首个页面中的数据绑定操作,建议使用ng-bind,以避免其未被渲染的模板被用户看到。

7.ng-click

定义一个AngularJS单机事件

<div ng-app="" ng-init="flag = true;">
      <button type="button" ng-click="flag = !flag">点击修改</button>
      {{ flag }}
</div>
扩展
ng-show
设置HTML元素可见

ng-hide
设置HTML元素隐藏

8.ng-repeat

遍历数据集合中的每个数据元素
向HTML容器中添加多个类似DOM元素的时候,适合使用ng-repeat

遍历数组
<div ng-app="" ng-init="names = ['李大泽', '李小泽', '老王', '小赵', '王五']">
    <ul>
        <li ng-repeat="name in names">{{ name }}</li>
    </ul>
</div>
遍历对象
<div ng-app="" ng-init="person = {name: 'lidaze', age: 18, gender: 'man'}">
   <ul>
       <li ng-repeat="(key, value) in person">{{ key + " " + value }}</li>
   </ul>
</div>
遍历数组套对象
<div ng-app="" ng-init="people = [{name: 'lidaze1', age: 18, gender: 'man'}, {name: 'lidaze2', age: 18, gender: 'man'}, {name: 'lidaze3', age: 18, gender: 'man'}]">
            <ul>
                <li ng-repeat="p in people">{{ p.name + " " + p.age + " " + p.gender }}</li>
            </ul>
        </div>

9.ng-class

预设指令,用来动态自定义dom元素的css className

示例
<div class="" ng-app="" ng-init="flag = false;">
    <button type="button" ng-click="flag = !flag;" name="button">修改颜色</button>
    <section ng-class="{true: 'active', false: 'inactive'}[flag]">

    </section>
</div>

10.ng-include

将多个页面公共的提取出来

示例
<div class="" ng-app="" ng-init="flag = false;">
    <div class="" ng-include="'common.html'">

    </div>
</div>

注意:

必须用web容器打开站点才能成功,本地文件访问模式会报错

ng-include的值如果要写文件名需要加单引号,否则会被当做变量

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 194,242评论 5 459
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 81,769评论 2 371
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 141,484评论 0 319
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,133评论 1 263
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,007评论 4 355
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,080评论 1 272
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,496评论 3 381
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,190评论 0 253
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,464评论 1 290
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,549评论 2 309
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,330评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,205评论 3 312
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,567评论 3 298
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,889评论 0 17
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,160评论 1 250
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,475评论 2 341
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,650评论 2 335

推荐阅读更多精彩内容

  • 简介# AngularJS 是一个为动态WEB应用设计的结构框架,提供给大家一种新的开发应用方式,这种方式可以让你...
    Simple_habits阅读 570评论 0 9
  • angularjs介绍 官网https://angularjs.org/ -是什么? --为动态Web应用设计的结...
    昵称不能太随便阅读 409评论 0 2
  • AngularJS是什么?AngularJs(后面就简称ng了)是一个用于设计动态web应用的结构框架。首先,它是...
    200813阅读 1,568评论 0 3
  • ng-model 指令ng-model 指令 绑定 HTML 元素 到应用程序数据。ng-model 指令也可以:...
    壬万er阅读 857评论 0 2
  • 有一句话说的通俗但又很接地气:“千金难买早知道”;大多数的人一定或多或少地出现过这样的想法。但是,很少人会再深入的...
    路上的威利阅读 97评论 1 3