视频1 视频21 视频41 视频61 视频文章1 视频文章21 视频文章41 视频文章61 推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37 推荐39 推荐41 推荐43 推荐45 推荐47 推荐49 关键词1 关键词101 关键词201 关键词301 关键词401 关键词501 关键词601 关键词701 关键词801 关键词901 关键词1001 关键词1101 关键词1201 关键词1301 关键词1401 关键词1501 关键词1601 关键词1701 关键词1801 关键词1901 视频扩展1 视频扩展6 视频扩展11 视频扩展16 文章1 文章201 文章401 文章601 文章801 文章1001 资讯1 资讯501 资讯1001 资讯1501 标签1 标签501 标签1001 关键词1 关键词501 关键词1001 关键词1501 专题2001
AngularJs自定义指令可以如何来设置以及自定义指令的命名规范
2020-11-27 19:33:15 责编:小采
文档


AngularJS为我们提供了自定义指令的功能,通过此功能,我们可以自定义一些标签,为我们自己的开发来提供帮助。下面的内容我将给大家分享关于AngularJs通过directive和restrict来设置自定义指令的方法。

一、AngularJs自定义指令directive的restrict属性说明:

今天公用的html部分:

<h1 zym-blog></h1>

JavaScript部分:

var m = angular.module('app', []);
m.directive('zymBlog', [function(){
	return {
	restrict : 'AEC',
	template : '<p>hello world</p>',
	replace : true
	};
}]);

通过directive设置自定义指令,第一个参数是指令名称,第二个参数是数组,包含一个回调函数,函数的返回值是一个json对象,其中:

restrict表示指令的形式:A是属性、E是元素、C是class类,为了避免和style中的class类混淆,不推荐使用C。

template是模板内容,表示使用这个自定义属性的标签中要插入的内容。

replace的值默认是false,如果是true,说明要用templace中的标签替换html代码中使用这个自定义指令的标签。注意,如果使用replace,那么template中必须包含html元素,不能只是几个文字,否则angular会报错。

下面再来看一个属性,templateUrl和template不能同时出现,templateUrl是引用的模板地址:

var m = angular.module('app', []);
m.directive('zymBlog', [function(){
	return {
	restrict : 'AEC',
	templateUrl : './46-1.html',
	replace : true
	};
}]);

注意,因为这里使用了replace,所以templateUrl对应的模板内容中必须包含html标签元素。

二、自定义指令的标准命名规范:

directive指令名称用驼峰命名法,例如【zymBlog】,那么在html代码中进行调用时,需要在大写字母之前加一个横杠,例如【zym-blog】。

三、自定义指令template函数式操作:

template不仅可以是一个字符串,也可以是一个函数,例如:

var m = angular.module('app', []);
m.directive('zymBlog', [function(){
	return {
	restrict : 'AEC',
	template : function(){
	return '<p>赵一鸣个人技术博客</p>';
	},
	replace : true
	};
}]);

四、自定义指令transclude属性:

有一种情况,在html中使用了自定义指令,但是标签内部原来就有内容,这样的话,自定义指令里边的内容会把标签原来的内容替换掉,所以需要一个添加一个属性来解决这个问题(ng-transclude):

html部分:

<h1 zym-blog>赵一鸣博客http://www.zymseo.com</h1>

js部分:

var m = angular.module('app', []);
m.directive('zymBlog', [function(){
	return {
	restrict : 'AEC',
	template : function(){
	return '<p>赵一鸣AngularJs学习笔记<span ng-transclude></span></p>';
	},
	replace : true,
	transclude : true
	};
}]);

设置ng-transclude的值为true之后,还必须在自定义指令的内部再加入一个标签,并且制定ng-transclude,这样是把原来html标签里边的内容放到这个标签里边!

下载本文
显示全文
专题