zoukankan      html  css  js  c++  java
  • angular插件制作——Directive指令使用详解

    1.replace——最简单的使用方法,直接将自定义标签替换为模板内的内容: 

    html:

     1 <!DOCTYPE html>
     2 <html>
     3     <head>
     4         <meta charset="UTF-8">
     5         <title></title>
     6             <script type="text/javascript" src="angular.js" ></script>
     7             <script type="text/javascript" src="template.js" ></script>
     8     </head>
     9     <body ng-app="app">
    10         <template></template>    
    11     </body>
    12 </html>

    javascipt:

    1 var app=angular.module("app",[])
    2 app.directive("template",function(){
    3     return {
    4         restrict: 'E',
    5         template: '<div>Hi template</div>',
    6         replace: true
    7     }
    8 })

    2. transclude(变换)——将自定义标签替换成我们所编写的HTML模板,但是自定义标签内部的内容会保留在具有ng-transclude指令的标签内:

    html:

     1 <!DOCTYPE html>
     2 <html>
     3     <head>
     4         <meta charset="UTF-8">
     5         <title></title>
     6             <script type="text/javascript" src="angular.js" ></script>
     7             <script type="text/javascript" src="template.js" ></script>
     8     </head>
     9     <body ng-app="app">
    10         <hello>
    11             <br>
    12             <span>使用transclude,自定义标签内部的内容会被保留在模板标签中具有ng-transclude指令的标签内部</span>
    13         </hello>
    14         <hello></hello>
    15     </body>
    16 </html>

    javascript:

    1 var appModule = angular.module('app', []);
    2     appModule.directive('hello', function() {
    3     return {
    4         restrict: 'E',
    5         template: '<div>Hi there <span ng-transclude>这里的内容不会显示,只会显示自定义标签内部的内容</span></div>',
    6         transclude: true
    7     };
    8 });

    3. link函数——绑定事件到元素上,一个简单的典型的插件就能实现了

    css:

     1 .expander {
     2     border: 1px solid black;
     3     width: 250px;
     4 }
     5 
     6 .expander>.title {
     7     background-color: black;
     8     color: white;
     9     padding: .1em .3em;
    10     cursor: pointer;
    11 }
    12 
    13 .expander>.body {
    14     padding: .1em .3em;
    15 }

    html:

     1 var app=angular.module("app",[])
     2 app.directive("temp",function(){
     3     return {
     4         restrict : "EA",
     5         replace : true,
     6         transclude : true,
     7         scope : {
     8             title : '=tempTitle'
     9         },
    10         template : '<div>'
    11                  + '<div class="title" ng-click="toggle()">{{title}}</div>'
    12                  + '<div class="body" ng-transclude ng-show="showMe"></div>'
    13                  + '</div>',
    14         link : function(scope,element,attrs){
    15             scope.showMe=false;
    16             scope.toggle=function(){
    17                 scope.showMe=!scope.showMe
    18             }
    19         }
    20     }
    21 })
    22 
    23 app.controller("tempCtrl",function($scope){
    24     $scope.title="点我,你能看到更多"
    25     $scope.text="是不是多了几个字"
    26 })

    html:

     1 <!DOCTYPE html>
     2 <html>
     3     <head>
     4         <meta charset="UTF-8">
     5         <script type="text/javascript" src="angular.js" ></script>
     6         <script type="text/javascript" src="temp.js"></script>
     7         <title></title>
     8     </head>
     9     <body ng-app="app">
    10         <div ng-controller="tempCtrl">
    11             <temp class="expander" temp-title="title">{{text}}</temp>
    12         </div>        
    13     </body>
    14 </html>
  • 相关阅读:
    Reborn
    个人总结
    第十六周个人进度条
    梦断代码阅读笔记03
    第十五周个人进度条
    第十四周个人进度条
    第十三周个人进度条
    冲刺9
    冲刺8
    事后诸葛亮会议
  • 原文地址:https://www.cnblogs.com/xyyt/p/6985926.html
Copyright © 2011-2022 走看看