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实现json页面分页实例代码
Feb 20 Javascript
jquery日历控件实现方法分享
Mar 07 Javascript
js获取下拉列表的值和元素个数示例
May 07 Javascript
js的Prototype属性解释及常用方法
May 08 Javascript
node.js中的http.response.addTrailers方法使用说明
Dec 14 Javascript
jQuery实现点击后标记当前菜单位置(背景高亮菜单)效果
Aug 22 Javascript
谈一谈bootstrap响应式布局
May 23 Javascript
Bootstrap table的使用方法
Nov 02 Javascript
慕课网题目之js实现抽奖系统功能
Sep 19 Javascript
vue里面父组件修改子组件样式的方法
Feb 03 Javascript
详解vuex结合localstorage动态监听storage的变化
May 03 Javascript
Node.js创建HTTP文件服务器的使用示例
May 11 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 无法载入mysql扩展
2010/03/12 PHP
PHP面向对象分析设计的61条军规小结
2010/07/17 PHP
phpMyAdmin出现无法载入 mcrypt 扩展,请检查PHP配置的解决方法
2012/03/26 PHP
phpstrom使用xdebug配置方法
2013/12/17 PHP
php将textarea数据提交到mysql出现很多空格的解决方法
2014/12/19 PHP
PHP+MySQL插入操作实例
2015/01/21 PHP
php验证邮箱和ip地址最简单方法汇总
2015/10/30 PHP
php PDO实现的事务回滚示例
2017/03/23 PHP
兼容Mozilla必须知道的知识。
2007/01/09 Javascript
浅谈javascript中基本包装类型
2015/06/03 Javascript
基于BootStrap Metronic开发框架经验小结【七】数据的导入、导出及附件的查看处理
2016/05/12 Javascript
Bootstrap 轮播(Carousel)插件
2016/12/26 Javascript
React Router基础使用
2017/01/17 Javascript
JS全角与半角转化实例(分享)
2017/07/04 Javascript
Angular 2父子组件数据传递之局部变量获取子组件其他成员
2017/07/04 Javascript
微信小程序如何像vue一样在动态绑定类名
2018/04/17 Javascript
vue2.0+vue-router构建一个简单的列表页的示例代码
2019/02/13 Javascript
vue搜索和vue模糊搜索代码实例
2019/05/07 Javascript
JavaScript 函数用法详解【函数定义、参数、绑定、作用域、闭包等】
2020/05/12 Javascript
vue+elementUI(el-upload)图片压缩,默认同比例压缩操作
2020/08/10 Javascript
深度剖析使用python抓取网页正文的源码
2014/06/11 Python
详解Python中内置的NotImplemented类型的用法
2015/03/31 Python
Python基于identicon库创建类似Github上用的头像功能
2017/09/25 Python
新手常见6种的python报错及解决方法
2018/03/09 Python
谈一谈基于python的面向对象编程基础
2019/05/21 Python
tensorflow tf.train.batch之数据批量读取方式
2020/01/20 Python
Python GUI编程学习笔记之tkinter界面布局显示详解
2020/03/30 Python
Python xlwings插入Excel图片的实现方法
2021/02/26 Python
分享一个H5原生form表单的checkbox特效代码
2018/02/26 HTML / CSS
英国假睫毛购买网站:FalseEyelashes.co.uk
2018/05/23 全球购物
幼儿园中班评语大全
2014/04/17 职场文书
小学三年级学生评语
2014/04/22 职场文书
教师批评与自我批评范文
2014/10/15 职场文书
销售员态度差检讨书
2014/10/26 职场文书
2015年电工工作总结
2015/04/10 职场文书
pd.drop_duplicates删除重复行的方法实现
2022/06/16 Python