AngularJS--directive

转载 2015年07月08日 16:47:47

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中是嵌套在声明元素内,还是替换声明元素。







内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:AngularJS--directive
举报原因:
原因补充:

(最多只允许输入30个字)