博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
AngularJS directive 创建属于你自己最简单的指令
阅读量:6224 次
发布时间:2019-06-21

本文共 1567 字,大约阅读时间需要 5 分钟。

hot3.png

最近写了一个自己做的angular动画插件,想要把它封装成比较通俗的指令,于是在网上找了好多angular封装指令的方法,下面就来给大家分享一下。。。。。

首先介绍一下angular指令的表现形式,目前我了解到的主要有四种:

  1. 一个新的HTML元素

    2.元素的属性

    3.CSS class

    4.注释

那OK,既然我们知道了angular的指令使用方法,下面我们就要学会怎么做一个指令啦

那么现在就来做一个最简单的hello-word指令

angular.module('myApp',[]).directive('helloWorld',function(){    return {        restrict:'AE',        replace:'true',        template:'

Hello World!

'    };});

那么这个指令我们封装好了,怎么调用呢?  很简单,看下面-------

//write something

没错,这样最简单的一个Hello World指令就做好了,那么接下来说一下这个方法,

directive这个方法有两个参数,

第一个当然就是我们要做的这个指令的名字啦,记住这里要用驼峰(cameCase)命名法,这样我们调用这个指令的时候,就可以用hello-world来调用了。

第二个参数是一个回调函数,我们所要做的所有功能都是写在这个回调函数里面的。OK,接下来就仔细讲一下这个回调函数

大家可以很明显地看到,这个函数需要返回了一个对象,那么它返回的这个对象中有三个属性,接下来我们介绍一下这三个属性的作用:

  1. restrict-这个属性用来指定指令在HTML中如何使用,就是我们之前说的四种表现形式。。。  在这个例子中,我们使用了'AE',所以这个指令可以被当做新的HTML元素或者属性来使用,那么如果我们想要让这个指令当做class来使用呢?我们可以将restrict这个值设置成  'AEC'

  2. template-这个属性规定了指令被Angular编译和链接后生成的HTML标记。当然了,我们可以把这个值变得很复杂,可以在这里面写多个div,多个样式,那么你就会想到,既然这样,我是不是完全可以写一个页面呢?  当然是可以的,甚至于你可以将你要实现的模板写到一个HTML文件里,然后将这个值改为templateUrl,将templateUrl指向你说写的HTML文件,这就有点像是模板注入了,所以这个地方是可以很灵活地使用的。。。哈哈,是不是发现有点骚

  3. replace-这个属性指明生成的HTML内容是否会替换掉定义此指令的HTML元素。在我们刚才的这个例子中,我们用了

    <hello-world></hello-world>的方式来使用我们的指令,并且将replace设置为true,因此,在改指令被Angular编译后,生成的模板会替换掉<hello-world></hello-world>。所以最终输出的是<h1>Hello World!</h1>。那么如果将这个值设置成false会怎么样呢?那么生成的模板会被插入到定义指令的元素中。

好啦,到这里,我们最简单的一个Angular自定义指令就完成了,是不是很简单呢。。。

当然啦,肯定会有人问,这样我要做的功能很复杂怎么办?要调用到页面元素怎么办?要有动态渲染怎么办?

这些其实都是可以实现的,我们可以在directive的回调函数中,将返回的对象加入更多的属性值,以此来达到我们更多的目的。。。具体步骤我们下次再来一篇深入的介绍哈O(∩_∩)O

转载于:https://my.oschina.net/codingBingo/blog/632659

你可能感兴趣的文章
如何申请开通微信多客服功能
查看>>
Sr_C++_Engineer_(LBS_Engine@Global Map Dept.)
查看>>
非监督学习算法:异常检测
查看>>
App开发中甲乙方冲突会闹出啥后果?H5 APP 开发可以改变现状吗
查看>>
jquery的checkbox,radio,select等方法总结
查看>>
Linux coredump
查看>>
Ubuntu 10.04安装水晶(Mercury)无线网卡驱动
查看>>
Myeclipes快捷键
查看>>
我的友情链接
查看>>
ToRPC:一个双向RPC的Python实现
查看>>
我的友情链接
查看>>
nginx在reload时候报错invalid PID number
查看>>
神经网络和深度学习-第二周神经网络基础-第二节:Logistic回归
查看>>
Myeclipse代码提示及如何设置自动提示
查看>>
c/c++中保留两位有效数字
查看>>
ElasticSearch 2 (32) - 信息聚合系列之范围限定
查看>>
VS2010远程调试C#程序
查看>>
[MicroPython]TurniBit开发板DIY自动窗帘模拟系统
查看>>
由String类的Split方法所遇到的两个问题
查看>>
Python3.4 12306 2015年3月验证码识别
查看>>