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

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函数内,而不要放在控制器里。

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

最新文章

  1. Github使(zhuang)用(bi)指南
  2. 根据UIColor对象,获取对应的RGBA值
  3. 截取js数组中某段值(slice)
  4. python错误
  5. HDU 5030 Rabbit&#39;s String
  6. TC srm 673 300 div1
  7. ISA2006 下建立VPN连接时出现“错误800”时的解决办法
  8. (转) Unity3D中角色的动画脚本的编写(三)
  9. mcrypt.h not found. Please reinstall libmcrypt
  10. Boost 和 STL 相比有哪些优势和劣势?
  11. WordPress 实用SEO插件总结
  12. Sublime Text3中最常用的快捷键
  13. JAVA_SE基础——21.二维数组的定义
  14. api-gateway实践(08)新服务网关 - 云端发布和日志查看
  15. redis分布式锁实践
  16. HTML学习笔记Day6
  17. Controller:EOS区块链核心控制器
  18. L255 Learning to say no brings a thrill of freedom
  19. Dream_Spark-----Spark 定制版:004~Spark Streaming事务处理彻底掌握
  20. CSS之float vs position:absolute

热门文章

  1. C# 字符串按设置的格试在前面或后面增加空格或其它字符
  2. php中需要注意的函数(持续更新)
  3. iOS退出APP
  4. stm32 SD卡
  5. UltraISO 软碟通注册(亲测!!!)
  6. vi编辑器简介
  7. nginx的应用【静态代理、动静分离】
  8. 请求类型 GET 和 POST 的区别
  9. MySQL服务器
  10. plus代码闪光点