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 放大镜 v1.0 基于Yui2 实现的放大镜效果
Mar 08 Javascript
jquery实现弹出窗口效果的实例代码
Nov 28 Javascript
使用pcs api往免费的百度网盘上传下载文件的方法
Mar 17 Javascript
基于jQuery ligerUI实现分页样式
Sep 18 Javascript
Angular实现购物车计算示例代码
Feb 21 Javascript
JavaScript中运算符规则和隐式类型转换示例详解
Sep 06 Javascript
原生JS封装animate运动框架的实例
Oct 12 Javascript
JS使用正则表达式找出最长连续子串长度
Oct 26 Javascript
javascript高仿热血传奇游戏实现代码
Feb 22 Javascript
vue+mousemove实现鼠标拖动功能(拖动过快失效问题解决方法)
Aug 24 Javascript
浅谈js闭包理解
Apr 01 Javascript
JavaScript WeakMap使用详解
Feb 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将数据库中的电话号码读取出来并生成图片
2008/08/31 PHP
解析isset与is_null的区别
2013/08/09 PHP
php删除数组元素示例分享
2014/02/17 PHP
微信公众号判断用户是否已关注php代码解析
2016/06/24 PHP
JS window.opener返回父页面的应用
2009/10/24 Javascript
javascript 放大镜 v1.0 基于Yui2 实现的放大镜效果
2010/03/08 Javascript
js 数组克隆方法 小结
2010/03/20 Javascript
JSQL 基于客户端的成绩统计实现方法
2010/05/05 Javascript
腾讯与新浪的通过IP地址获取当前地理位置(省份)的接口
2010/07/26 Javascript
JavaScript打字小游戏代码
2011/12/26 Javascript
ajax中get和post的说明及使用与区别
2012/12/23 Javascript
jQuery类选择器用法实例
2014/12/23 Javascript
javascript实现的右下角弹窗实例
2015/04/24 Javascript
AngularJS的ng-repeat指令与scope继承关系实例详解
2017/01/21 Javascript
JavaScript实现前端实时搜索功能
2020/03/26 Javascript
React Native第三方平台分享的实例(Android,IOS双平台)
2017/08/04 Javascript
Vue可自定义tab组件用法实例
2019/10/24 Javascript
通过原生vue添加滚动加载更多功能
2019/11/21 Javascript
python网络编程之UDP通信实例(含服务器端、客户端、UDP广播例子)
2014/04/25 Python
PyQt5实现无边框窗口的标题拖动和窗口缩放
2018/04/19 Python
Python中修改字符串的四种方法
2018/11/02 Python
Python命名空间的本质和加载顺序
2018/12/17 Python
Django认证系统实现的web页面实现代码
2019/08/12 Python
简单了解python数组的基本操作
2019/11/26 Python
python实现图像拼接
2020/03/05 Python
Python 基于jwt实现认证机制流程解析
2020/06/22 Python
应届大学生求职信
2013/12/01 职场文书
三个儿子教学反思
2014/02/03 职场文书
本科生自荐信
2014/06/18 职场文书
大学生社会实践活动总结
2014/07/03 职场文书
债务纠纷委托书范本
2014/10/14 职场文书
2015年统计员个人工作总结
2015/07/23 职场文书
钓鱼岛事件感想
2015/08/11 职场文书
python字符串常规操作大全
2021/05/02 Python
Golang表示枚举类型的详细讲解
2021/09/04 Golang
Mysql中常用的join连接方式
2022/05/11 MySQL