AngularJS指令与指令之间的交互功能示例


Posted in Javascript onDecember 14, 2016

本文实例讲述了AngularJS指令与指令之间的交互功能。分享给大家供大家参考,具体如下:

前面一篇文章《AngularJS指令与控制器之间的交互功能示例》我们了解了指令与控制器之间的交互,接下来看看指令与指令之间是如何进行交互的。

1.首先来了解一下什么是独立scope

为了更好的理解独立scope,我们来看一段代码:

<div ng-controller="myController1">
    <hello></hello>
    <hello></hello>
</div>
var app=angular.module('firstApp',[]);//app模块名
  app.controller('myController1',['$scope',function($scope){
}]);
app.directive('hello',function(){
    return{
      restrict:'E',
      template:"<div><input type='text' ng-  model='username'/>{{username}}",
      replace:true
    }
})

我们定义了一个指令,并在html中调用了两次,我们发现,调用两次的结果为:使用同一个指令构建的scope共享了一个数据,结果如下,我们在一个输入框中输入数据,会改变第二个指令中的输入框

AngularJS指令与指令之间的交互功能示例

如何解决这个问题呢,我们需要给指令生成独立的scope,每次使用指令时,生成的scope都是独立的,我们只需要如此修改:

app.directive('hello',function(){
    return{
      restrict:'E',
      scope:{},
      template:"<div><input type='text' ng-model='username'/>{{username}}",
      replace:true
    }
})

结果如下:

AngularJS指令与指令之间的交互功能示例

2.指令与指令之间的交互,指令的继承

(1)首先我们定义了一个父指令,定义的方式如下:

app.directive('father',function(){
    return{
     restrict:'E',
     scope:{},
     controller:function($scope){
      this.mean1=function(){
       console.log('这是第一个方法....');
      };
      this.mean2=function(){
       console.log('这是第二个方法....');
      };
      this.mean3=function(){
       console.log('这是第三个方法....');
      }
     }
    }
});

我们注意到,指令里面也有controller,这里的controller与控制器定义过程中的不同,这里的controller指的是指令的独立scope中定义的一些方法。

(2)定义子指令,子指令中可以使用父指令中scope中的方法:

app.directive('childFirst',function(){
    require:'^father',
    link:function(scope,ele,attr,fatherCtrl){
      fatherCtrl.mean1();
    }
})

这样通过:

require:'^father'

子指令就可以继承并且使用父指令中,独立scope中的一些方法。此时我们的link函数就可以有第四个参数。

link和controller中方法的区别:

link中的方法是需要执行或者马上要执行的方法。

controller中的方法是希望暴露出来,给外部使用的一些方法。

总结:

指令之间的交互,是通过指令的controller中暴露出来的方法,给外部指令使用。

希望本文所述对大家AngularJS程序设计有所帮助。

Javascript 相关文章推荐
15个款优秀的 jQuery 图片特效插件推荐
Nov 21 Javascript
web的各种前端打印方法之jquery打印插件jqprint实现网页打印
Jan 09 Javascript
jquery fancybox ie6不显示关闭按钮的解决办法
Dec 25 Javascript
基于jQuery实现的文字按钮表单特效整理
Dec 07 Javascript
JQuery中extend的用法实例分析
Feb 08 Javascript
js实现的牛顿摆效果
Mar 31 Javascript
仿Angular Bootstrap TimePicker创建分钟数-秒数的输入控件
Jul 01 Javascript
prototype与__proto__区别详细介绍
Jan 09 Javascript
简单的React SSR服务器渲染实现
Dec 11 Javascript
手把手带你封装一个vue component第三方库
Feb 14 Javascript
Jquery的autocomplete插件用法及参数讲解
Mar 12 jQuery
js简单粗暴的发布订阅示例代码
Jan 23 Javascript
AngularJS指令与控制器之间的交互功能示例
Dec 14 #Javascript
网站申请不到支付宝接口、微信接口,免接口收款实现方式几种解决办法
Dec 14 #Javascript
AngularJS定时器的使用与移除操作方法【interval与timeout】
Dec 14 #Javascript
本地Bootstrap文件字体图标引入却无法显示问题的解决方法
Apr 18 #Javascript
微信小程序中使元素占满整个屏幕高度实现方法
Dec 14 #Javascript
AngularJS基于ngInfiniteScroll实现下拉滚动加载的方法
Dec 14 #Javascript
bootstrap modal弹出框的垂直居中
Dec 14 #Javascript
You might like
PHP 登录完成后如何跳转上一访问页面
2014/01/14 PHP
Zend Framework生成验证码并实现验证码验证功能(附demo源码下载)
2016/03/22 PHP
关于PHP文件的自动运行方法分析
2016/05/13 PHP
Yii2中使用join、joinwith多表关联查询
2016/06/30 PHP
用htc组件制作windows选项卡
2007/01/13 Javascript
javascript 面向对象编程 聊聊对象的事
2009/09/17 Javascript
jQuery 学习第六课 实现一个Ajax的TreeView
2010/05/17 Javascript
jQuery 中使用JSON的实现代码
2011/12/01 Javascript
ASP.NET jQuery 实例7 通过jQuery来获取DropDownList的Text/Value属性值
2012/02/03 Javascript
JQuery动画和停止动画实例代码
2013/03/01 Javascript
向左滚动文字 js代码效果
2013/08/17 Javascript
可以用鼠标拖动的DIV实现思路及代码
2013/10/21 Javascript
js实现绿白相间竖向网页百叶窗动画切换效果
2015/03/02 Javascript
jquery实现可关闭的倒计时广告特效代码
2015/09/02 Javascript
基于Flowplayer打造一款免费的WEB视频播放器附源码
2015/09/06 Javascript
javascript获取系统当前时间的方法
2015/11/19 Javascript
去除字符串左右两边的空格(实现代码)
2016/05/12 Javascript
js多功能分页组件layPage使用方法详解
2016/05/19 Javascript
浅析JavaScript中的对象类型Object
2016/05/26 Javascript
jquery+ajax+text文本框实现智能提示完整实例
2016/07/09 Javascript
jQuery源码解读之extend()与工具方法、实例方法详解
2017/03/30 jQuery
zTree树形插件异步加载方法详解
2017/06/14 Javascript
vue数据传递--我有特殊的实现技巧
2018/03/20 Javascript
浅谈Node.js 中间件模式
2018/06/12 Javascript
JS实现点击li标签弹出对应的索引功能【案例】
2019/02/18 Javascript
javascript 模块依赖管理的本质深入详解
2020/04/30 Javascript
JQuery省市联动效果实现过程详解
2020/05/08 jQuery
[52:52]DOTA2上海特级锦标赛C组资格赛#1 OG VS LGD第三局
2016/02/27 DOTA
如何在Python函数执行前后增加额外的行为
2016/10/20 Python
Python3导入CSV文件的实例(跟Python2有些许的不同)
2018/06/22 Python
Python3环境安装Scrapy爬虫框架过程及常见错误
2019/07/12 Python
python 实现超级玛丽游戏
2020/11/25 Python
汉森冲浪板:Hansen Surfboards
2018/05/19 全球购物
学生会竞选自荐信
2013/10/12 职场文书
创先争优演讲稿
2014/09/15 职场文书
Window server 2012 R2 AD域的组策略相关设置
2022/04/28 Servers