angularJs自定义指令用法我忽略,之前有写过,这里只说一下父子级之间如何传值;

例如:

模块我定义为myApp,index.html定义 <my-html bol-val="bolVal"></my-html>,index的controller定义为myAppCtrl;

js:  angular.module('app.myApp')

  .controller('myAppCtrl',['$scope','myService',myAppCtrl])

  .service('myService',function(){

    var obj = {};

    this.setValue = function(key,value){

      obj[key] = value;

    };

    this.getValue = function(key){

      return obj[key];

    };

    this.clearValue = function(key){

      delete obj[key]

    };

  })  //这个比较关键

  .directive('myHtml',function(){

   function myHtmlCtrl($scope,myService){

    //子页面逻辑

    $scope.myFn=function(){

      alert('Hello Word!');

    };//假设有这样一个函数

    (1)父级给子级传过来的值console.log($scope.bolVal);

    (2)子级要传给父级的值,例如要传一个变量$scope.isShow = true,

    则这样设置:myService.setValue('isShow',$scope.isShow)//变量名称可以自己定义,我为了方便还直接取了isShow;

  }

  return {
    restrict: 'E',
    replace: true,
    scope:{
      bolVal:'=' //有时这个值不一定拿得到,是因为嵌套层级太多,需要传过去一个对象才能拿到,看情况而定,如果父级传过来是个函数,那用“&”

    },
    templateUrl:'app/myapp/myhtml.html',//子级html文件所在路径
    controller:['$scope','myService',myHtmlCtrl],
    controllerAs:'vm',
    link: function ($scope,element,attrs) {

      //link函数这里主要进行dom操作

      (1)第一种:可以调用子级的方法。我这里是监听传过来值的变化对这个子页面进行dom操作
      $scope.$watch('bolVal', function (nwVal, odVal) {
        if (nwVal != odVal) {
          $scope.myFn();
        }  
      });

      (2)第二种:可以灵活调用父级方法。

      这里link可以做很多事情,我就不多说了,可以多找几个例子看看!

    }
  };

 });

 index页面controller逻辑

  function myAppCtrl($scope,myService){

    //业务逻辑    

    (1)父传子:

      如果index页面有一个$scope.bolVal = true值;我想要传到子页面myhtml.html中,

      那很简单如上写法页面里定义bol-val="bolVal",切记:遇到大写的一定加“-”并改为小写,

      directive return 对象scope里bolVal:"="

    (2)子传父:

      如果myhtml页面中有一个值想要传到index页面,那就比较复杂,angularJs用法还是比较灵活的,

      可以写一个service服务两个controller中分别注入,例如定义为myService,如上;

      这时,在子页面myhtml的controller里边设置要传的值,在父页面获取传过来的值;

      父页面取值,注意一点:这个值有可能会保存到本地,所以设置之前要先清除:

        myService.clearValue('isShow');

        myService.getValue('isShow');

  }

angularJs 自定义指令传值---父级与子级之间的通信的更多相关文章

  1. vue $emit 父组件与子组件之间的通信(父组件向子组件传参)

    1.首先新建一个子页面为 env.vue的文件(名字这里大家可以自取) 2.然后把子页面引入父页面,代码如图: import env from '@/components/common/env' ex ...

  2. Vue父子组件通信(父级向子级传递数据、子级向父级传递数据、Vue父子组件存储到data数据的访问)

    Vue父子组件通信(父级向子级传递数据.子级向父级传递数据.Vue父子组件存储到data数据的访问) 一.父级向子级传递数据[Prop]: ● Prop:子组件在自身标签上,使用自定义的属性来接收外界 ...

  3. 浅析AngularJS自定义指令之嵌入(transclude)

    AngularJS自定义指令的嵌入功能与vue的插槽十分类似,都可以实现一些自定义内容展现.在开始之前先简单介绍下自定义指令的transclude属性和AngularJS的内置指令ng-transcl ...

  4. AngularJs自定义指令详解(1) - restrict

    下面所有例子都使用angular-1.3.16.下载地址:http://cdn.bootcss.com/angular.js/1.3.16/angular.min.js 既然AngularJs快要发布 ...

  5. AngularJS: 自定义指令与控制器数据交互

    <!doctype html> <html> <head> <meta charset="utf-8"> <title> ...

  6. angularjs自定义指令Directive

    今天学习angularjs自定义指令Directive.Directive是一个非常棒的功能.可以实现我们自义的的功能方法. 下面的例子是演示用户在文本框输入的帐号是否为管理员的帐号"Adm ...

  7. js input复选框选中父级同时子级也选中

    js实现复选框选中父级元素子级元素也选中,没有子级元素选中父级也不选中的效果 HTML <tr> <td> <label> <input name=" ...

  8. js父页面和子页面之间传值

    今天和朋友一块讨论,怎样通过js在父页面和子页面之间传值的问题,总结例如以下: 需求描写叙述:父页面有多个子页面.实如今父页面点击子页面,传值到子页面. 看着非常easy,试了好久.主要纠结在怎样获取 ...

  9. Iframe父页面与子页面之间的调用

    原文:Iframe父页面与子页面之间的调用 Iframe父页面与子页面之间的调用 专业词语解释如下:     Iframe:iframe元素是文档中的文档.     window对象: 浏览器会在其打 ...

随机推荐

  1. delphi XE7 HttpEncode 编码问题

    近期在做网址编码相关的工作,发现在用 XE5 编译的时候,一切正常,拿 到 XE7下 就 结果错误了.百度了下,谷歌 了下,有人提出,但是,我没有找到答案,也许都没有碰到这个问题,也许都己经自己默默的 ...

  2. ubuntu上swift开发学习2

    使用包管理器(package manager)创建一个可执行的项目 1. 创建一个Hello目录,然后进入目录 $ mkdir Hello $ cd Hello 2. 使用包初始化命令,参数表示创建一 ...

  3. PyQt5豆瓣镜像下快速安装

    直接pip安装,慢到你怀疑人生.豆瓣镜像安装,嗯,不能更爽. pip install PyQt5 -i https://pypi.douban.com/simple 谢谢:https://blog.c ...

  4. css的核心

    css核心内容--流 流:在现实生活中就是流水,在网页设计中就是元素的排列方式. 标准流:元素在网页中就像流水,排在前面的元素内容前面出现,排在后面的元素内容后面显示. 这种布局方式就称为标准流的布局 ...

  5. 改善C#程序的建议10:用Parallel简化Task

    在命名空间System.Threading.Tasks下,有一个静态类Parallel简化了在同步状态下的Task的操作.Parallel主要提供了3个有用的方法:For.ForEach.Invoke ...

  6. Go丨语言学习笔记--func

    Java语言跟Go语言的函数比较 Go语言 func funcName(input type1,input type2,......)(output type1,output type2,...... ...

  7. hdu-5858 Hard problem(数学)

    题目链接: Hard problem Time Limit: 2000/1000 MS (Java/Others)     Memory Limit: 65536/65536 K (Java/Othe ...

  8. Spring 配置 详细

    一.连接池概述 数据库连接池概述: 数据库连接是一种关键的有限的昂贵的资源,这一点在多用户的网页应用程序中体现得尤为突出.对数据库连接的管理能显著影响到整个应用程序的伸缩性和健壮性,影响到程序的性能指 ...

  9. uC/OS-II源码分析(三)

    首先来了解下实时系统的基本概念: 1) 临界区,共享资源,任务(类似于进程),任务切换,任务调度,可剥夺型内核,可重入函数,动态优先级调度, 2) 如何处理优先级反转问题.这个问题描述如下:有三个任务 ...

  10. [转]ECMAScript5 Object的新属性方法

    虽然说现在并不是所有的浏览器都已经支持ECMAScript5的新特性,但相比于ECMAScript4而言ECMAScript5被广大浏览器厂商广泛接受,目前主流的浏览器中只有低版本的IE不支持,其它都 ...