不用搭环境的10分钟AngularJS指令简易入门01(含例子)

不用搭环境的10分钟AngularJS指令简易入门01(含例子)

`#不用搭环境系列AngularJS教程01,前端新手也可以轻松入坑~阅读本文大概需要10分钟~`

AngularJS的指令是一大特色之一,可以将控件组合封装并简易调用。不难入门,而且用起来很爽!这次我带各位童鞋一步步学会AngularJS的指令系统。

前置技能需求:HTML、CSS、JS基础,没错不用会Angular也行!(逃

一、史上最简单入门

指令是 扩展具有自定义功能的 HTML 元素的途径。换个说法,简单来说就是把一堆组件合成到一个HTML标签里!

哦?酱是怎样?马上上例子:

<!DOCTYPE html>
    <html lang="en">
        <head>
            <meta charset="UTF-8">
            <title>Document</title>
        </head>
        <body>
            <a href="http://www.cnblogs.com/qixi233/" target="_blank">七喜哥哥仔的博客</a>
        </body>
    </html>`

上面是一个简单的HTML代码块,会生成一个写着"七喜哥哥仔的博客"文字的超链接。我们现在尝试用指令来封装其中a标签超链接的部分:

很简单的,分三步走:

  1. 在这次代码书写的过程中不用搭建环境,只需要在某个文件夹下新建两个空文件:index.html 以及app.js(大家也可以学我在RunJS上写,国内在线编程网站,可以运行或修改代码);

  2. 首先在空的app.js中编辑:

     var myapp = app.module('myapp',[]); //最顶级的模块,与index.html中的ng-app绑定
    

    这样我们就有第一个模块了,好~接下来往这个模块添加本文的重点指令

     myapp.directive('myDire',function(){
         return{
             restrict:'EACM',
             template:'<a href="http://www.cnblogs.com/qixi233/" target="_blank">七喜哥哥仔的博客</a>'
         };
     });
    

    现在就完成了app.js的编写,先不用管这个东西怎么实现的,先实现了再说不要停

  3. 接下来来编辑index.html:

     <!DOCTYPE html>
     <html ng-app="myapp">
         <head>
             <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
             <title>AngularJS指令最简单入门01</title>
             <script src="http://cdn.bootcss.com/angular.js/1.6.2/angular.min.js"></script>
             <script src="app.js"></script>
         </head>
         <body>
             <my-dire></my-dire>
         </body>
     </html>
    

    好我们现在也完成了index.html的编辑,在index.html里面我们引用了AngularJS的国内CDN,所以能够方便快捷地调试而且不用安装环境!如果是在本地调试记得像上面代码一样添加对app.js的引用哦~

我们现在已经完成了对两个文件的编辑了,那么就可以开始运行了吗?当然!快试试吧~各位童鞋也可以看看我写的参考代码

按照大神推荐的习惯,好的学习习惯可以是以下这样的:

完成小作品 -》 学习理解 -》 迭代作品

我们现在已经有了一个小Demo,但是可能有些童鞋不能理解这个Demo是如何运行的或者原理是神马,所以我们现在来根据这个Demo进行相关的学习~

二、简单解析

学过设计模式的同学都知道最小知识原则(Least Knowledge Principle)吧,同化到学习或者讲解过程中也适用。(别装逼了说人话

嗯好哒在不清楚某个程序的时候,先能让它正常工作,不直接去追根究底地问"起源是什么"、"系统如何运作",而是从已有的程序出发,慢慢延伸出去,能够更简单地清晰地学习,所以我们就不讲AngularJS是如何运行的,就只针对其**指令系统**讲解一番(才不是因为我讲不好原理呢哼~

2.1、学习指令系统的目的

对于上面Demo的简单指令,我们可以看出指令的作用在于,只是在index.html种用简单的一句<my-dire></my-dire>就能显示出一长串的a标签代码,甚至放下几十个几百个a都没问题,当我们封装好了一个这样的指令,我们可以在控制器范围内简单地多次调用,大大方便了我们的操作~

2.2、对于指令Demo的简单解析

那么我们先来看app.js,模块声明并与index.html的ng-app绑定,这是AngularJS的惯例操作,在HTML中用内置的指令ng-app标记出应用的根节点,目的是确定模块能够控制的HTML文档范围。

接下来就是要为模块编写一些功能,让模块更好地为HTML文档服务咯,于是我们用.directive('',function(){}); 为模块添加上我们自定义的指令功能。direcitive接收两个参数,第一个参数是指令名字,第二个参数是指令实现。

  1. 指令名字:在Demo中我们用驼峰法填写指令名字(例如myDire),但是在HTML中使用该指令就需要用短划线间隔的形式使用该指令(例如my-dire)因为HTML不区分大小写,所以形成了这种编写规范(占坑如果找到更明确的理由再更新)。

  2. 指令实现:我们用'restrict'和'template'两个参数来编写指令,还有在Demo中没有出现的'replace'

    • restrict:告诉AngularJS在编译时使用哪种声明格式来匹配指令定义,可以指定1-4个格式(可以放到Demo中试试):

      • 格式:

        • 元素(E) <my-dire></my-dire>
        • 属性(A) <div my-dire></div>
        • 类(C) <div class="my-dire"></div>
        • 注释(M) ``

        对于新手,需要先了解一下HTML的几个知识点,这对了解restrict的使用很有帮助哦:
        <!DOCTYPE html>
        <html lang="en">
        <head>
        <meta charset="UTF-8">
        <title>Document</title>
        </head>
        <body>
        <a href></a>
        <div class="container"></div>
        </body>
        </html>

      对于上面这样一般编辑器html:5然后tab就能生成出的简单HTML代码,包含了要介绍的HTML的各个部分。

      • HTML元素(element)由一个开始标签和一个结束标签组成。例如 <div class="container"></div>

      • HTML标签用来标记元素的开始和结束,标签本身用尖括号来声明。例如:<div></div>

      • 属性用来给HTML元素添加额外的信息,这些属性设置在开始标签中,使用key='value'的形式键值对设置。例如:
        <a href></a>

      • 类用class="XXX"的形式为标签赋予新的特性:例如<div class="container"><div>

    • template:现在就暂时用''包含我们要赋予新指令的内容HTML模板,之后的教程会逐步深入的

    • replace:咦这个是干啥的,之前没出现过呢。不要怕,replace就像它的名字一样都是“取代”的意思,接收一个boolean值参数,当true时替换,false时不替换。那替换的是什么呢?又到了上图的时候了~

01.png

当不写replace时或replace:false时,在指令生成的a标签外面,会有my-dire包裹着(如上图所示);

02.png

当replace:true时,my-dire就不会出现了(如上图所示)这就是replace的使用简单吧

三、总结

指令入门很简单,但学会简单入门之后,我们会思考,要是我想要动态修改指令内部内容应该怎么做呢,Angular本身的特性例如双向数据绑定如何应用到指令上呢等我下篇文章再一一道来

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

推荐阅读更多精彩内容