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和C#的异同
May 31 Javascript
JavaScript对象创建及继承原理实例解剖
Feb 28 Javascript
如何根据百度地图计算出两地之间的驾驶距离(两种语言js和C#)
Oct 29 Javascript
BootstrapTable与KnockoutJS相结合实现增删改查功能【一】
May 10 Javascript
利用jquery给指定的table动态添加一行、删除一行的方法
Oct 12 Javascript
HTML Table 空白单元格补全的简单实现
Oct 13 Javascript
AngularJS 应用身份认证的技巧总结
Nov 07 Javascript
JavaScript实现拖拽元素对齐到网格(每次移动固定距离)
Nov 30 Javascript
jQuery如何跳转到另一个网页 就这么简单
Dec 28 Javascript
ES6知识点整理之数组解构和字符串解构的应用示例
Apr 17 Javascript
JS左右无缝轮播功能完整实例
May 16 Javascript
Element的el-tree控件后台数据结构的生成以及方法的抽取
Mar 05 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原理的opcodes(操作码)
2010/10/26 PHP
php一些错误处理的方法与技巧总结
2013/08/10 PHP
php用户注册页面利用js进行表单验证具体实例
2013/10/17 PHP
PHP关联数组实现根据元素值删除元素的方法
2015/06/26 PHP
php基于环形链表解决约瑟夫环问题示例
2017/11/07 PHP
TP(thinkPHP)框架多层控制器和多级控制器的使用示例
2018/06/13 PHP
PHP 进程池与轮询调度算法实现多任务的示例代码
2019/11/26 PHP
TP5框架安全机制实例分析
2020/04/05 PHP
php对mongodb的扩展(初识如故)
2012/11/11 Javascript
js弹出框轻量级插件jquery.boxy使用介绍
2013/01/15 Javascript
禁止按回车键提交表单的方法
2015/06/11 Javascript
NodeJs模拟登陆正方教务
2017/04/28 NodeJs
vue使用stompjs实现mqtt消息推送通知
2017/06/22 Javascript
详解node-ccap模块生成captcha验证码
2017/07/01 Javascript
jQuery插件artDialog.js使用与关闭方法示例
2017/10/09 jQuery
基于vue2实现上拉加载功能
2017/11/28 Javascript
layui 优化button按钮和弹出框的方法
2018/08/15 Javascript
vue中组件的过渡动画及实现代码
2018/11/21 Javascript
Layui 导航默认展开和菜单栏选中高亮设置的方法
2019/09/04 Javascript
解决layUI的页面显示不全的问题
2019/09/20 Javascript
vue使用swiper实现中间大两边小的轮播图效果
2019/11/24 Javascript
[51:14]LGD vs VP 2018国际邀请赛淘汰赛BO3 第一场 8.21
2018/08/22 DOTA
python with statement 进行文件操作指南
2014/08/22 Python
python处理Excel xlrd的简单使用
2017/09/12 Python
浅谈pycharm的xmx和xms设置方法
2018/12/03 Python
Python matplotlib的使用并自定义colormap的方法
2018/12/13 Python
使用python3实现操作串口详解
2019/01/01 Python
Python占用的内存优化教程
2019/07/28 Python
Django框架model模型对象验证实现方法分析
2019/10/02 Python
对pytorch的函数中的group参数的作用介绍
2020/02/18 Python
python-jwt用户认证食用教学的实现方法
2021/01/19 Python
施华洛世奇巴西官网:SWAROVSKI巴西
2019/12/03 全球购物
军训考核自我鉴定
2014/02/13 职场文书
元旦晚会主持词
2014/03/24 职场文书
幼儿园的门卫岗位职责
2014/04/10 职场文书
2019年冬至:天冷暖人心的问候祝福语大全
2019/12/20 职场文书