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 相关文章推荐
JavaScript代码复用模式实例分析
Dec 02 Javascript
node.js中的dns.getServers方法使用说明
Dec 08 Javascript
每天一篇javascript学习小结(Boolean对象)
Nov 12 Javascript
详解JavaScript对象序列化
Jan 19 Javascript
Angular 理解module和injector,即依赖注入
Sep 07 Javascript
jQuery实现的简单动态添加、删除表格功能示例
Sep 21 jQuery
JS中注入eval, Function等系统函数截获动态代码
Apr 03 Javascript
vue中 this.$set的用法详解
Sep 06 Javascript
VUE 直接通过JS 修改html对象的值导致没有更新到数据中解决方法分析
Dec 02 Javascript
vue+element 实现商城主题开发的示例代码
Mar 26 Javascript
js实现简单扫雷
Nov 27 Javascript
从原生JavaScript到React深入理解
Jul 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
咖啡是不是喝了会上瘾?咖啡是必须品吗!
2021/03/04 新手入门
PHP安装问题
2006/10/09 PHP
Search File Contents PHP 搜索目录文本内容的代码
2010/02/21 PHP
PHP中将字符串转化为整数(int) intval() printf() 性能测试
2020/03/20 PHP
利用php获取服务器时间的实现代码
2013/06/07 PHP
解决php使用异步调用获取数据时出现(错误c00ce56e导致此项操作无法完成)
2013/07/03 PHP
设置php页面编码的两种方法示例介绍
2014/03/03 PHP
php中 $$str 中 &quot;$$&quot; 的详解
2015/07/06 PHP
PHP根据树的前序遍历和中序遍历构造树并输出后序遍历的方法
2017/11/10 PHP
PHP 实现base64编码文件上传出现问题详解
2020/09/01 PHP
FireFox与IE 下js兼容触发click事件的代码
2008/11/20 Javascript
jQuery 添加/移除CSS类实现代码
2010/02/11 Javascript
基于jQuery的输入框在光标位置插入内容, 并选中
2011/10/29 Javascript
jQuery实现可拖动的浮动层完整代码
2013/05/27 Javascript
js与css实现弹出层覆盖整个页面的方法
2014/12/13 Javascript
nodejs 实现钉钉ISV接入的加密解密方法
2017/01/16 NodeJs
vue-cli项目修改文件热重载失效的解决方法
2018/09/19 Javascript
vue的keep-alive中使用EventBus的方法
2019/04/23 Javascript
vue实现简单学生信息管理
2020/05/30 Javascript
[46:58]完美世界DOTA2联赛PWL S3 Forest vs LBZS 第一场 12.17
2020/12/19 DOTA
Python异常处理总结
2014/08/15 Python
详解tensorflow训练自己的数据集实现CNN图像分类
2018/02/07 Python
python不同系统中打开方法
2020/06/23 Python
TensorFlow低版本代码自动升级为1.0版本
2021/02/20 Python
Raleigh兰令自行车美国官网:英国凤头牌自行车
2018/01/08 全球购物
便利店投资的创业计划书
2014/01/12 职场文书
小学毕业家长寄语
2014/01/19 职场文书
贯彻学习两会心得体会范文
2014/03/17 职场文书
关爱残疾人演讲稿
2014/05/24 职场文书
出资证明书范本(标准版)
2014/09/24 职场文书
2015年采购工作总结
2015/04/10 职场文书
2015年车间安全管理工作总结
2015/05/13 职场文书
redis限流的实际应用
2021/04/24 Redis
Python Pycharm虚拟下百度飞浆PaddleX安装报错问题及处理方法(亲测100%有效)
2021/05/24 Python
jQuery实现广告显示和隐藏动画
2021/07/04 jQuery
使用redis实现延迟通知功能(Redis过期键通知)
2021/09/04 Redis