JavaScript框架之AngularJS学习——指令(一)

AngularJS学习——指令(一)


指令是AngularJS应用最重要的组成部分之一,是对HTML属性或元素的扩展,通常情况下Web浏览器并不能识别这些属性或元素,但是AngularJS框架会把它们作为指令,然后执行相应的逻辑处理,最终将这些指令解析为Web浏览器能够识别的元素。

指令出现的形式:

1.作为HTML元素出现(E)

<my-directive></my-directive>

2.作为HTML元素属性出现(A)

<input type="text" my-directive>

3.作为CSS类样式出现(C)

<input type="text" class="my-directive"/>

4.作为HTML注释内容出现(M)

<!-- my-directive -->

一般情况下将指令作为HTML元素或属性使用(EA)


AngularJS通常分为内置指令和自定义指令。

内置指令之前的内容有讲解很多,大家可以回看之前的一些内容

AngularJS内置指令都是以ng开头。

1.内置指令

  • ng-app主要用于启动框架
  • ng-model表单元素和对应作用域中的属性建立数据绑定
  • ng-init初始化AngularJS作用域
  • ng-controller实例化控制对象
  • ng-disabled表单元素是否禁用
  • ng-checked表单元素是否选中
  • ng-change表单元素内容改变绑定方法
  • ng-class绑定样式
  • ng-bind与AngularJS表达式效果类似
  • ng-if是否出现在DOM中
  • ng-show是否在显示在页面中
  • ng-hide是否不显示在页面中
  • ng-repeat用于比阿尼作用域中的集合数据
  • ng-include用于将一个独立的HTML文件内容包含到指令出现的位置
  • ng-viewngRoute时使用的一个指令,将内容指定到指令出现的位置

2.AngularJS自定义指令

一般情况下,AngualrJS内置指令就能满足我们的需求,但是为了简化开发过程,我们可以将通用的功能封装成指令,形成自定义的指令库。

AngularJS模块对象提供了一个directive()方法来帮助我们实现自定义指令。

eg:

<!DOCTYPE html>
<html lang="en" ng-app="myApp">
<head>
	<meta charset="UTF-8">
	<title>directive</title>
	<script src="https://cdn.bootcss.com/angular.js/1.6.5/angular.js"></script>	
</head>
<body ng-controller="myCtrl">
	<my-directive></my-directive>
	<script>
		var app = angular.module("myApp", []);
		app.directive("myDirective", function(){
			return {
				restrict: "ECMA",
				replace: true,
				template: "<h1>Hello World!</h1>"
			}
		})
	</script>
</body>
</html>
例子中,directive()方法接受两个参数:第一个参数为指令名称,采用驼峰式命名法;第二个为指令定义方法,需要返回一个对象(成为指令定义对象DDO),用于描述指令的特征及指令对应的处理逻辑。

注意,在使用自定义指令是,需要将指令名称改写为全部小写并在大小写出天价“-”或“:”将多个单词隔开,如:

<my-directive></my-directive>
<my:directive></my:directive>
<span my-directive></span>
<span my:directive></span>
为了符合HTML5命名规范,我们还可以如下:

<x-my-directive></x-my-directive>
<data-my-directive></data-my-directive>
当AngularJS框架匹配到自定义指令时,会自动将指令前缀“x-”或“data-”去除,并将指令名称中的“-”或者“:”分隔符去掉,转换成驼峰式命名。

在指令放回定义方法中:

restrict属性表示AngularJS指令使用的4中形式,ECMA

replace属性,该属性用于指定是否使用template属性定义的HTML模板内容替换指令所在的HTML元素。如:

当replace为true时:


所有HTML元素被替换

当replace为false


HTML元素没有被替换,指令模板内容嵌入指令中。

template属性,其中的内容可以是HTML内容,也可以在HTML内容中使用其他指令和AngularJS表达式,也可以使用templateUrl属性,填写相应的外部HTML模板路径,即可使用。






以上笔记整理自个人学习,用做个人学习分享。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值