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 相关文章推荐
Mootools 1.2教程 选项卡效果(Tabs)
Sep 15 Javascript
fancybox1.3.1 基于Jquery的插件在IE中图片显示问题
Oct 01 Javascript
通过javascript获取iframe里的值示例代码
Jun 24 Javascript
jQuery实现可收缩展开的级联菜单实例代码
Nov 27 Javascript
js利用数组length属性清空和截短数组的小例子
Jan 15 Javascript
js中实现字符串和数组的相互转化详解
Jan 24 Javascript
理解js对象继承的N种模式
Jan 25 Javascript
微信小程序 视图层(xx.xml)和逻辑层(xx.js)详细介绍
Oct 13 Javascript
JavaScript事件方法(实例讲解)
Jun 27 Javascript
electron制作仿制qq聊天界面的示例代码
Nov 26 Javascript
vue车牌号校验和银行校验实战
Jan 23 Javascript
Vue2.0实现简单分页及跳转效果
Jul 29 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 array的学习笔记
2012/05/10 PHP
ThinkPHP视图查询详解
2014/06/30 PHP
tp5.1 框架查询表达式用法详解
2020/05/25 PHP
JScript内置对象Array中元素的删除方法
2007/03/08 Javascript
javascript判断iphone/android手机横竖屏模式的函数
2011/12/20 Javascript
Javascript 加载和执行-性能提高篇
2012/12/28 Javascript
jQuery实现id模糊查询的小例子
2013/03/19 Javascript
Web Inspector:关于在 Sublime Text 中调试Js的介绍
2013/04/18 Javascript
js将当前时间格式转换成时间搓(自写)
2013/09/26 Javascript
JS嵌套函数调用上下文的问题解决
2014/03/26 Javascript
javascript中的nextSibling使用陷(da)阱(keng)
2014/05/05 Javascript
JQuery对ASP.NET MVC数据进行更新删除
2016/07/13 Javascript
AngularJs  Creating Services详解及示例代码
2016/09/02 Javascript
Node.js学习之地址解析模块URL的使用详解
2017/09/28 Javascript
微信小程序之选项卡的实现方法
2017/09/29 Javascript
Vue利用路由钩子token过期后跳转到登录页的实例
2017/10/26 Javascript
使用element-ui的el-menu导航选中后刷新页面保持当前选中状态
2019/07/19 Javascript
微信小程序框架的页面布局代码
2019/08/17 Javascript
解决layui动态加载复选框无法选中的问题
2019/09/20 Javascript
深入理解Antd-Select组件的用法
2020/02/25 Javascript
javascript 内存模型实例详解
2020/04/18 Javascript
JavaScript自定义超时API代码实例
2020/04/30 Javascript
[08:56]DOTA2-DPC中国联赛2月23日Recap集锦
2021/03/11 DOTA
python实现带声音的摩斯码翻译实现方法
2015/05/20 Python
Win7 64位下python3.6.5安装配置图文教程
2020/10/27 Python
Python+OpenCV实现图像融合的原理及代码
2018/12/03 Python
解决python xlrd无法读取excel文件的问题
2018/12/25 Python
python爬取微信公众号文章的方法
2019/02/26 Python
如何通过python计算圆周率PI
2020/11/11 Python
CSS的pointer-events属性详细介绍(作用和注意事项)
2014/04/23 HTML / CSS
数据库面试要点基本概念
2013/10/31 面试题
2014年公司植树节活动方案
2014/03/04 职场文书
电子商务优秀毕业生求职信
2014/07/11 职场文书
2015年校医个人工作总结
2015/07/24 职场文书
CSS巧用渐变实现高级感背景光动画
2021/12/06 HTML / CSS
Redis中有序集合的内部实现方式的详细介绍
2022/03/16 Redis