关闭

AngularJS--directive

标签: angularjshtmlhtml5
150人阅读 评论(0) 收藏 举报

1.angularJS中directive命名

在使用directive时,第一个参数既是在html文档中使用的标签名。但是有个问题需要注意,在js文件中使用驼峰命名时,在html文件中需要使用'-'进行分隔,如下所示:

JS文件,在module中定义directive为myDirective:

angular.module('app',[])
    .directive('myDirective', function() {
        console.log('hello');
        return {
            restrict: 'E',
            template: '<a href="http://www.baidu.com">Click me to go to Baidu</a>',
            replace:true
        };
    });
HTML文件,使用标签应为my-directive

<!DOCTYPE html>
<html ng-app="app">
<head>
    <meta charset="UTF-8">
    <title></title>
    <script src="../js/angular.min.js"></script>
    <script src="chapter8_1.js"></script>
</head>
<body>
    <my-directive></my-directive>
</body>
</html>

如果在HTML中同样使用驼峰形式,则会产生未知标签的错误。

2.Directive的格式

下面都是用来声明前面创建指令的合法格式:

<my-directive></my-directive>
<div my-directive></div>
<div class="my-directive"></div>
<!--directive:my-directive-->

为了让AngularJS能够调用我们的指令,需要修改指令定义中的restrict设置。这个设置告诉AngularJS在编译HTML时用哪种声明格式来匹配指令定义。我们可以指定一个或多个格式。例如,之前创建的指令中可以指定以元素(E)、属性(A)、类(C)或注释(M)的格式来调用指令:
angular.module('app',[])
    .directive('myDirective', function() {
        console.log('hello');
        return {
            restrict: 'EAC',
            template: '<a href="http://www.baidu.com">Click me to go to Baidu</a>',
            replace:true
        };
    });

无论有多少种方式可以声明指令,我们坚持使用属性方式,因为它有比较好的跨浏览器兼容性:<div my-directive></div>

遵循这个约定的同时,也要注意每个浏览器的内置样式,以便决定指令模板在HTML中是嵌套在声明元素内,还是替换声明元素。







0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:13966次
    • 积分:368
    • 等级:
    • 排名:千里之外
    • 原创:12篇
    • 转载:18篇
    • 译文:8篇
    • 评论:2条
    文章分类
    最新评论