AngularJS-指令(创建一个最基础指令)

AngularJS: API: ng/directive

已使用过的内置指令,例如:

 ng-app、ng-controller、ng-init、ng-model、ng-bind、{{}}

指令基本用法:

命名约定:使用驼峰命名,大写字母在使用时需要用分隔符-隔开

app.directive(‘myDirective’,function(){
  return {
    template:...
  };
})

创建最基本的自定义指令模版:

嘻嘻,咱创建一个普通的a标签指令,最后效果呢,会显示4个"我的博客"超链接,每行代码咱慢慢放下分析。

html代码:
<!DOCTYPE html>
<html ng-app="myApp">
<head lang="en">
  <meta charset="UTF-8">
  <link rel="stylesheet" href="css/angular-csp.css"/>
  <title>指令</title>
</head>
<body>
<!--属性形式-->
<div my-directive></div>
<!--标签形式-->
<my-directive></my-directive>
<!--类形式-->
<div class="my-directive"></div>
<!--注释形式-->
<!-- directive:my-directive -->
<script src="js/angular.js"></script>
<script src="js/directive.js"></script>
</body>
</html>
js代码:
var app = angular.module('myApp',[]);
//声明一个自定义指令my-directive
//命名约定:使用驼峰写法,大写字母处在使用的时候需要用‘-’隔开
app.directive('myDirective', function () {
    return {
        restrict:'AECM',//设置使用方式:A-属性中使用 E-标签中使用 C-class类中使用 M-注释中使用
        template:'<a href="https://blog.csdn.net/LoveyourselfJiuhao">我的博客</a>',
        replace:true//值必须为true,因为默认值为false。默认值意味着模板会被当作子元素插入到调用此指令的元素内部
    };
})

显示效果和展示元素代码

restrict:设置使用指令的四种形式

  1. 属性(A)
  2. 标签(E)
  3. 类(C)
  4. 注释(M)

默认情况下使用A(属性)和E(标签),我们把myDirective下面restrict删掉,测试结果如图:

 属性(A)、标签(E)的显示了,而类(C)、注释(M)的指令并没有生效,如果设置restrict:'A' 那只有属性的生效

 

注意:从浏览器的兼容性方面考虑,建议使用A或者E

replace:设置指令依赖注入后的显示方式

值必须为true,因为默认值为false,默认值意味着模板会被当作子元素插入到调用此指令的元素内部

可能不好理解,我们结果来说话:

咱删掉replace,默认replace:flase,看到了吧,指令a标签包含在了源码的内部  而不是替换掉,要注意注释指令不生效了

不过不懂的人可能疑惑您自定义指令是什么东西咯,看不明白,不太友好,建议设为true

 

猜你喜欢

转载自blog.csdn.net/LoveyourselfJiuhao/article/details/86601300