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

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. VS.NET(C#)--1.3_VS2005开始

    VS2005开始 开始页 1.文件系统:这是默认,把网站创建到当前物理文件系统上(可以本地或网络).此时VS2005将使用内置的Web服务器,不使用IIS运行Web应用程序.2.HTTP使用IIS处理 ...

  2. 线程一(lock)

    对于线程同步操作最简单的一种方式就是使用 lock 关键字,通过 lock 关键字能保证加锁的线程只有在执行完成后才能执行其他线程.   lock 的语法形式如下. lock(object) {    ...

  3. 如何理解H264 编码

    H264 结构 https://blog.csdn.net/andywang201001/article/details/80274886 H264 源码  https://www.cnblogs.c ...

  4. 解决github提示安全漏洞的问题

    今天在提交代码的时候发现github提示了这样的错误: We found potential security vulnerabilities in your dependencies. Only t ...

  5. vue 做的tabBar组件

    效果如下 调用 <tabbar :selected='selected'></tabbar> 组件 <template> <div class='tabbar ...

  6. ABAP Netweaver体内的那些寄生式编程语言

    今天这篇文章的主题是:寄生. Jerry最近看到朋友圈里一位朋友分享的一张寄居蟹的照片,对于Jerry这种在内地长大的又很宅的人来说,没有机会看到寄居蟹,所以觉得很新鲜: 寄居蟹主要以螺壳为寄体,寄居 ...

  7. MVC-区域(Area)

    1.启用路由前的准备工作 1.Global.asax.cs中注册路由 public class MvcApplication : System.Web.HttpApplication { protec ...

  8. 14 Windows编程——SetWindowLong

    使用默认窗口处理函数,源码 #include<Windows.h> #include<Windowsx.h> LRESULT CALLBACK WindProc(HWND hw ...

  9. mr-robot靶机练习

    在业余时间进行的靶机练习,也是根据网上的大牛做下来的,重复造轮子吧,但是个人感觉还是即使是造轮子也是需要自己动手呀,毕竟每个人做的过程中遇到的问题是不一样的,这样既可以帮助别人也能锻炼自己.希望可以帮 ...

  10. dict sorted by value. 字典根据 值排序

    d = [('a', 24), ('g', 52), ('i', 12)] print(sorted(d),key = lambda x:x[1]) sorted (字典,排序的依据: 字典[key] ...