• angularjs控制器之间的数据共享与通信


    1、可以写一个service服务,从而达到数据和代码的共享;

    var app=angular.module('app',[]);
         app.service('ObjectService', [ObjectService]);
    function ObjectService() {
     var list = {};
     return {
      get: function(id){
       return list[id];
      },
      set: function(id, v){
       list[id] = v;
      }
     }
    }  
    

     在一个控制器中,注入ObjectService,再调用ObjectService.set('i',1)设置的数据,在其它的控制器中,便可通过ObjectService.set('i')来获取。这方法本人没有怎么用过

    2、广播与事件

      

    AngularJS 中在触发事件和发送广播时,都可以传递参数,可以通过这一特性,来实现数据的共享。与事件和广播相关的,共有三个方法,分别是:

        1.$emit():触发事件,它可以向上传递数据,比如,子控制器向父控制器。

        2.$broadcast():发送广播,它可以向下传递数据,比如,父控制器向子控制器传递数据;这个有时接收不到,如:单独在父控制器写一个这个$broadcast()传数据,在子控制器中写一个$on()改收到这个数据是收不到的;如我把$broadcast()写在一个点击函数里面,点击时,字控制器能收到。

        3.$on():监听事件与广播,可以捕获 $emit  $broadcast

    可以将控制器之间的通信,分为三种情形:

        1.无直接关联的控制器:使用 $rootScope.$emit()、$rootScope.$boardcast()  $scope.$emit 来发出数据,通过 $rootScope.$on() 来获取数据,这个没怎么用过,

        2.父控制器到子控制器:父控制器使用 $scope.$boradcast() 来发送数据,子控制器通过 $scope.$on() 来获取数据

        3.子控制器至父控制器:子控制器使用 $scope.$emit() 来发送数据,父控制器通过 $scope.$on() 来获取数据

    3、将数据全局共享;

      三中方法:ng中有两中,

      在ng-app中定义的全局变量,在不同的ng-controller里都可以使用。
      通过var 直接定义global variable,这根纯js是一样的。
      用angularjs value来设置全局变量 。
      用angularjs constant来设置全局变量 

    4、父控制器里的参数,子控制器里可以直接使用,如:我设一个变量scope.data="成功",你在其子控制里可以直接用scope.data。

    “我相当乐意花一天的时间通过编程把一个任务实现自动化,除非这个任务手动只需要10秒钟就能完成”
  • 相关阅读:
    MYSQL数据库间同步数据
    mysqld-nt: Out of memory (Needed 1677720 bytes)解决方法
    Apache优化:修改最大并发连接数
    MySql 存储过程实例(附完整注释)
    android loadlibrary 更改libPath 路径,指定路径加载.so
    如何在ANDROID JNI 的C++中打Log
    递归转手工栈处理的一般式[C语言]
    计算机语言学习导论[C/C++]
    程序错误[C/C++]
    访问栈为什么会比访问堆快?
  • 原文地址:https://www.cnblogs.com/flxy-1028/p/6443471.html
Copyright © 2020-2023  润新知