做一个下拉菜单,体会指令各参数的作用

html代码

<script type="text/ng-template" id="mydropdown.html">
<div class="box">
<div class="dropTitle" ng-click="droptoggle()">{{dropTitle}}</div>
<div class="dropBody" ng-transclude ng-show="myshow"></div>
</div>
</script>
<div ng-controller="dropCtrl">
<ex droptitle="scopeTitle">{{dorpbody}}</ex>
</div>

controller

app.controller("dropCtrl",["$scope",function($scope){
$scope.dorpbody="my dropdown body";
$scope.scopeTitle="my title"
}]); app.directive("ex",function(){
return{
restrict:"AE",
replace:true,
transclude:true,
templateUrl:"mydropdown.html",
scope:{
dropTitle:"=droptitle"//使用父作用域中的一个属性,绑定数据到指令的属性中
},
link:function(scope,ele,attr){
scope.myshow=false;
scope.droptoggle=function(){
scope.myshow=!scope.myshow;
}
}
}
})

首先是关于templateUrl参数,该参数可以获取指定模板,有时候为了节省http请求,可以使用<script type="text/ng-template" id="mydropdown.html">这种方式,同样可以通过id取到指定模板。replace:true。将指定模板替换到自定义指令内,为了使得标题可改,就要借助于数据绑定。因为我们自定义的指令是有个独立scope的,所以本来可以绑定到link函数里去的,为了指令的复用,应该把可变的标题绑定到控制器中。所以要多做一步,首先在自定义指令新建一个属性droptitle,将该属性与模板中的指令进行绑定,方式就是通过“=”的绑定策略。

绑定策略有三种“@”:传递一个字符串作为属性的值;“=”:使用父作用域中的一个属性,绑定数据到指令的属性中;“&”:使用父作用域中的一个函数,可以在指令中调用。现在模板中的{{dropTitle}}就与属性droptitle绑定了。第二步就是将属性与控制器内的值关联。现在只要在控制器中修改值就可以改变指令标题了。

显示/隐藏功能就是通过ngShow实现,需要注意的是应该讲这个逻辑放在指令的link函数内,而不要放在控制器里。

内容很简单,对于初学还是有借鉴意义的。

angularJs driective指令小实例的更多相关文章

  1. 转载 《AngularJS》5个实例详解Directive(指令)机制

    <AngularJS>5个实例详解Directive(指令)机制 大漠穷秋 本文整理并扩展了<AngularJS>这本书第六章里面的内容,此书近期即将由电子工业出版社出版,敬请 ...

  2. 带你走近AngularJS - 体验指令实例

    带你走近AngularJS系列: 带你走近AngularJS - 基本功能介绍 带你走近AngularJS - 体验指令实例 带你走近AngularJS - 创建自定义指令 ------------- ...

  3. AngularJS之指令

    紧接上篇博客“初探AngularJS” 一.前言 在AngularJS中指令尤为重要且内容庞多,固单独提炼出来,梳理一番.如有错误,请不吝讲解. 好了,言归正传,让我们一起走进Angular指令的世界 ...

  4. angularJS自定义指令间的“沟通”

    由此例子我们可以看出,angularJS使用指令时link的执行顺序<html> <head> <meta charset="utf-8"/> ...

  5. AngularJS基本指令

    <!doctype html> <html  ng-app> <head>   <meta charset="UTF-8">   & ...

  6. 学习AngularJs:Directive指令用法(完整版)

    这篇文章主要学习AngularJs:Directive指令用法,内容很全面,感兴趣的小伙伴们可以参考一下   本教程使用AngularJs版本:1.5.3 AngularJs GitHub: http ...

  7. 跟我学AngularJs:AngularJs入门及第一个实例

    林炳文Evankaka原创作品.转载请注明出处http://blog.csdn.net/evankaka 摘要:主要给大家介绍了AngularJs及其特性,并以3个实例来做说明. 本教程使用Angul ...

  8. AngularJs:Directive指令用法

    摘自:http://www.jb51.net/article/83051.htm 摘要:Directive(指令)是AngularJ非常强大而有有用的功能之一.它就相当于为我们写了公共的自定义DOM元 ...

  9. 【js类库AngularJs】学习angularJs的指令(包括常见表单验证,隐藏等功能)

    [js类库AngularJs]学习angularJs的指令(包括常见表单验证,隐藏等功能) AngularJS诞生于2009年,由Misko Hevery 等人创建,后为Google所收购.是一款优秀 ...

随机推荐

  1. SQL Server2008本地数据库调用SP发送邮件

    一.首先要对本地数据库做配置 1.通过使用数据库邮件配置向导和sp_configure存储过程配置启用数据库邮件: 注:服务器名称填写发送服务器的路径或者IP,电子邮件地址为寄件者地址 配置好数据库邮 ...

  2. ABP 基于DDD的.NET开发框架 学习(四)时间控件采用datetimepicker注意事项

    $('#datetimepicker1').datetimepicker({ format: 'yyyy/mm/dd hh:ii:ss',//这是只能用小写的大写的与ABP中的字母识别起冲突 loca ...

  3. git 丢弃本地代码

    git 丢弃本地代码 1.还未将变更加入到暂存区,即未执行git add 命令前可以使用git checkout 命令来撤销修改:git checkout -- rainbow.txt start.t ...

  4. View Controller Programming Guid for iOS 笔记

    1.View Controller 基础 1.1 View Controller 分类 ViewController分为container view controller 和content view ...

  5. Vue动画操作

    概述 Vue 在插入.更新或者移除 DOM 时,提供多种不同方式的应用过渡效果.包括以下工具: 在 CSS 过渡和动画中自动应用 class 可以配合使用第三方 CSS 动画库,如 Animate.c ...

  6. C#-NPOI操作EXCEL

    1.获取NUGET NPOI包. 2.引用命名空间 using NPOI.SS.UserModel;using NPOI.XSSF.UserModel;using NPOI.HSSF.UserMode ...

  7. c# 接口实现

  8. Cknife流量分析

    本文首发:https://<img src=1 onerror=\u006coc\u0061tion='j\x61v\x61script:\x61lert\x281\x29'>testde ...

  9. RT-Thread--线程间同步

    线程间同步 一个线程从传感器中接收数据并且将数据写到共享内存中,同时另一个线程周期性的从共享内存中读取数据并发送去显示,下图描述了两个线程间的数据传递: 如果对共享内存的访问不是排他性的,那么各个线程 ...

  10. Goodbye Microservices: From 100s of problem children to 1 superstar

    https://segment.com/blog/goodbye-microservices/ Unless you’ve been living under a rock, you probably ...