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

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. c# 事件 +=和-=有什么区别

    +=就是發生新事件的同時通知你: -=就是發生新事件的同時不通知你:

  2. 编写Postgres扩展之四:测试

    原文:http://big-elephants.com/2015-11/writing-postgres-extensions-part-iv/ 编译:http://big-elephants.com ...

  3. opencv Cascade Classifier Training中 opencv_annotation命令

    在win7 cmd中试了官方的指令opencv_annotation --annotations=/path/to/annotations/file.txt --images=/path/to/ima ...

  4. TypeScript算法与数据结构-栈篇

    本文的源码在这里,可以参考一下 栈也是一种使用非常广泛的线性数据结构,它具有后进先出last in first out的特点.通俗的例子就像我们平时一本一本的往上放书,等到我们又想用书时,我们首先接触 ...

  5. OSI协议与TCP\IP协议之间的关系

    OSI协议 TCP\IP协议 五层协议(学习参考) 应用层 应用层 应用层 表示层 会话层 运输层 运输层 运输层 网络层 网络层 网络层 数据链路层 网络接口层 数据链路层 物理层 物理层 基于五层 ...

  6. 记一次bypass某场景GD库及拓展分析

    0x00 前言 gou楼兰师傅发来个站说是过不了gd库,问我有啥办法没有,给了他之前海贼师傅说的jpg_payload脚本,但是绕不过,问他拿了站点,写了个jpg_payload批量的fuzz脚本,f ...

  7. SQL SERVER-孤立用户

    --SQL SERVER用户管理分为两层,实例级的login和数据库级的用户 --login的SID和数据库用户的SID必须一样才行 --数据库搬迁login在重建时生成新的sid,与原来数据库的用户 ...

  8. Python_赋值运算符

    1.赋值运算符

  9. Windows——Thinkpad 开机显示pwmtr64v.dll找不到指定的模块

    解决方法:进入设备管理器,展开系统设备分页,找到Lenovo Power Manager ,右键,更新驱动程序,浏览计算机上的驱动程序, 让我从计算机上的可用驱动程序列表中选取,选择Lenovo Po ...

  10. 基于Java+Selenium的WebUI自动化测试框架(二)-----页面操作接口

    在有了基础的Position类之后,我们需要考虑我们在寻找完页面元素之后,需要做什么.这个“做”什么,可以理解为我们在页面上需要对应的一系列动作.比如:点击,输入,切换窗口,寻找元素,判断元素是否存在 ...