首页 > 其他分享 >AngularJS directive入门例子

AngularJS directive入门例子

时间:2023-05-31 12:36:12浏览次数:42  
标签:function 入门 directive title expanderModule link AngularJS scope expander

这是《AngularJS》这本书里面提供的一个例子:

 

JS代码:

var expanderModule=angular.module('expanderModule', [])
expanderModule.directive('expander', function() {
    return {
        restrict : 'EA',
        replace : true,
        transclude : true,
        scope : {
            title : '=expanderTitle'
        },
        template : '<div>'
                 + '<div class="title" ng-click="toggle()">{{title}}</div>'
                 + '<div class="body" ng-show="showMe" ng-transclude></div>'
                 + '</div>',
        link : function(scope, element, attrs) {
            scope.showMe = false;
            scope.toggle = function toggle() {
                scope.showMe = !scope.showMe;
            }
        }
    }
});
expanderModule.controller('SomeController',function($scope) {
    $scope.title = '点击展开';
    $scope.text = '这里是内部的内容。';
});

 

HTML代码:

 

<html ng-app='expanderModule'>
    <head>
        <meta http-equiv="content-type" content="text/html; charset=utf-8" />
        <script src="../angular-1.0.3/angular.min.js"></script>
        <link rel="stylesheet" type="text/css" href="ExpanderSimple.css"/>
    </head>
    <body>
        <div ng-controller='SomeController'>
            <expander class='expander' expander-title='title'>
                {{text}}
            </expander>
        </div>
    </body>
    <script src="ExpanderSimple.js"></script>
</html>

 

 

CSS代码:

 

.expander {
    border: 1px solid black;
    width: 250px;
}

.expander>.title {
    background-color: black;
    color: white;
    padding: .1em .3em;
    cursor: pointer;
}

.expander>.body {
    padding: .1em .3em;
}

 

运行效果如下:

AngularJS directive入门例子_jquery


 

compile阶段进行标签解析和变换,link阶段进行数据绑定等操作!

 

在所有module都装载完毕在之后,compile(element)(scope);开始编译和链接整个dom树(其实就是调用dom上出现的指令)。

第一步:传递应用根节点给$compile函数,开始编译,返回link函数。

第二步:传递根作用域给link函数,开始链接(每个指令分为pre link 和 post link两个过程)

 

link函数的参数:

  1. scope
    这个就是当前control的$scope对象,没啥好说的。
  2. element
    这个是当前dom节点经过“jquery”处理过后的对象。用过jquery的都知道这个概念。当然这边的jquery是angular自己实现的阉割版的jquery。方法少了许多,不过按angular的话说,够用了。
  3. attrs
    这个对象包含,当前的dom节点上的各种属性标签的值。不过要注意的是这边会将xxx-bbb这种形式的改写成xxxBbb的这种驼峰形式。

标签:function,入门,directive,title,expanderModule,link,AngularJS,scope,expander
From: https://blog.51cto.com/u_11908275/6385993

相关文章

  • Drools 入门案例——手把手教你
    Drools入门案例#业务场景说明#业务场景:消费者在图书商城购买图书,下单后需要在支付页面显示订单优惠后的价格。具体优惠规则如下:规则编号规则名称描述1规则一所购图书总价在100元以下的没有优惠2规则二所购图书总价在100到200元的优惠20元3规则三所购图书总价在200到300元的优惠50......
  • Nebula入门学习——day4 nGQL中的图查询和其他算法
    MATCH¶MATCH语句提供基于模式(pattern)匹配的搜索功能。一个MATCH语句定义了一个搜索模式,用该模式匹配存储在NebulaGraph中的数据,然后用RETURN子句检索数据。本文示例使用测试数据集basketballplayer进行演示。 我自己最喜欢用的是:(root@nebula)[basketballplayer]>MATCH(......
  • Nebula入门学习——day3 nGQL指南
    什么是nGQL¶nGQL(NebulaGraphQueryLanguage)是NebulaGraph使用的的声明式图查询语言,支持灵活高效的图模式,而且nGQL是为开发和运维人员设计的类SQL查询语言,易于学习。nGQL是一个进行中的项目,会持续发布新特性和优化,因此可能会出现语法和实际操作不一致的问题,如果遇到此......
  • nebula入门学习——day1 nebula基本概念、原理和架构
    什么是NebulaGraph¶NebulaGraph是一款开源的、分布式的、易扩展的原生图数据库,能够承载包含数千亿个点和数万亿条边的超大规模数据集,并且提供毫秒级查询。什么是图数据库¶图数据库是专门存储庞大的图形网络并从中检索信息的数据库。它可以将图中的数据高效存储为点(Vertex)和......
  • AngularJS2.0 一个表单例子——总体说来还是简化了1.x 使用起来比较自然
    <!doctypehtml><html><head><metacharset="utf-8"><title>NgForm</title><scripttype="text/javascript"src="lib/system@0.16.11.js"></script><scripttype=&......
  • AngularJS2.0 quick start——其和typescript结合需要额外依赖
    AngularJS2发布于2016年9月份,它是基于ES6来开发的。运行条件!由于目前各种环境(浏览器或Node)暂不支持ES6的代码,所以需要一些shim和polyfill(IE需要)让ES6写的代码能够转化为ES5形式并可以正常运行在浏览器中。从上图可以看出在Es5浏览器下需要以下模块加载器:systemjs -通用模块......
  • consul的入门实例
    Consul是一个开源的分布式服务发现和配置管理系统,由HashiCorp开发。它提供了服务注册与发现、健康检查、KV存储、多数据中心支持等功能,旨在简化分布式系统的构建和管理。Consul的入门实例主要涉及以下步骤:准备工作:安装Consul:根据您的操作系统,从Consul官方网站下载并安装Cons......
  • Solr的入门实例
    当涉及到Solr的入门实例时,以下是一个详细的示例,展示了如何设置Solr服务器并执行索引和查询操作。准备工作:安装Solr:请按照Solr官方文档中的说明安装并启动Solr服务器。创建集合:在Solr控制台上创建一个名为"my_collection"的集合。添加文档:创建一个名为"solr-demo"的Cor......
  • Eureka的入门实例
    当涉及到Eureka的入门实例时,以下是一个详细的示例,展示了如何设置Eureka服务器和注册服务。准备工作:添加依赖项:在您的Java项目中,添加以下依赖项以使用Eureka客户端和服务器:<dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-st......
  • AI入门纯干货系列课程目录
    第一课、AI导论 (已更)第二课、机器学习导论(已更)第三课、特征工程(已更)第四课、KNN最近邻算法(已更)第五课、朴素贝叶斯算法(已更)第六课、决策树/随机森林第七课、常用机器学习算法性能对比第八课、SVD分解及PCA第九课、集成学习第十课、深度学习导论第十一课、计......