Angular技术库
  • 简介
  • 研究热点
    • 单页面登录
    • 单页面服务器渲染
  • 项目实战
    • 目录结构
    • 模块开发流程
    • 公共模块编辑
    • UI使用
    • 工具库
      • util模块
      • filter模块
    • 表单验证
  • 整体框架
    • 环境搭建
      • Windows
      • MAC Linux
    • 示例项目
    • 开发调试
      • 编译JS
      • 编译CSS
      • 编译HTML
      • 编译Bower
      • 服务器启动
      • 与后端服务通讯
    • Gulp文档
      • Gulp API
      • 插件列表
      • Gulp构建
    • Gulp文档
    • 示例项目
  • Angular文档
    • 指令
    • 引导
    • 单页面
    • 基于requireJS和angularJS的前端技术架构
    • 数据共享
    • 模块加载
    • 事件循环
  • SASS文档
    • SASS特性
  • ES6文档
    • ECMAScript前导
    • ECMAScript6特性介绍
    • ES6特性筛选
  • JavaScript文档
    • 匿名函数定义
    • Function
      • 原生prototype
      • 自定义prototype
  • RequireJS
  • Node文档
  • 架构师
  • 时间轴
    • 2016-07-13
    • 2016-06-21
    • 2016-06-14
    • 2016-06-07
    • 2016-05-31
Powered by GitBook
On this page
  • https://wappalyzer.com/ 可用来分析网站所用技术
  • 页面数据传递共享的方式
  1. Angular文档

数据共享

Previous基于requireJS和angularJS的前端技术架构Next模块加载

Last updated 7 years ago

可用来分析网站所用技术

页面数据传递共享的方式

  1. 基于ui-router的页面跳转传参

    • 传递URL时候,同时传递参数。

      .state('producers', {
      url: '/producers',
      templateUrl: 'views/producers.html',
      controller: 'ProducersCtrl'
      })
      .state('producer', {
      url: '/producer/:producerId',
      templateUrl: 'views/producer.html',
      controller: 'ProducerCtrl'
      })
    • 例如点击事件,在A页面controller里面调用$state.go接口,定义页面跳转函数。

      .controller('ProducersCtrl', function ($scope, $state) {
      $scope.toProducer = function (producerId) {
         $state.go('producer', {producerId: producerId});
      };
      });
    • 在B页面,用$stateParams获取参数。

      .controller('ProducerCtrl', function ($scope, $state, $stateParams) {
      var producerId = $stateParams.producerId;
      });
  2. 通过服务构造单例对象进行通信 定义service把共享的数据注入到需要的controller中。 factory()通过返回一个包含service方法和数据的对象来定义一个service。 service()通过构造函数的方式创建service。 provider()是创建service最底层的方式,用.config()方法配置创建service的方法。

     app.factory('dataService', function(){
     var service = {
         name:"Tom"
     };
     return service;
    });
    app.controller('ctr1', function($scope,dataService){
     $scope.name = dataService.name;
     $scope.setName = function () {
         // body...
         $scope.name = "Jack";
     };
    });
    app.controller('ctr2', function($scope,dataService){
     $scope.name = dataService.name;
     $scope.setName = function () {
         // body...
         $scope.name = "John";
     };
    });
  3. 事件广播机制-尤其适合父控制器和子控制器通信 发送消息: $scope.$emit(name, data) 或者 $scope.$broadcast(name, data); 接收消息: $scope.on(name,function(event,data){ }); 区别: $emit 广播给父controller $broadcast 广播给子controller $on 有两个参数function(event,msg) 第一个参数是事件对象,第二个参数是接收到消息信息。 提出了做一个订阅发布的公共模块-接收方在这里订阅消息,发布方在这里发布消息。

https://wappalyzer.com/
https://github.com/xufei/blog/issues/18