zoukankan      html  css  js  c++  java
  • angularjs 不同的controller之间值的传递

    Sharing data between controllers in AngularJS

    I wrote this article to show how it can possible to pass data from one Controller to another one.

    There are two ways to do it, using a service or exploiting depending parent/child relation between controller scopes.
    In this post, we’ll analyze the last one method.

    It is possible to send data from parent controller to a child controller and viceversa.
    To transmit data from the FirstController to SecondController, which the scope of the first one is parent to the scope of the second one, it should use $broadcast method in the FirstController.
    Here the javascript code:
    父传($scope.$broadcast)子接收($scope.$on)
    angular.module('myApp', [])
    .controller('ParentCtrl', ['$scope', function($scope) {
    $scope.message = "Child updated from parent controller";

    $scope.clickFunction = function() {
    $scope.$broadcast('update_parent_controller', $scope.message);
    };
    }
    ])
    .controller('ChildCtrl', ['$scope', function($scope) {
    $scope.message = "Some text in child controller";

    $scope.$on("update_parent_controller", function(event, message) {
    $scope.message = message;
    });
    }
    ]);

    Here a plunker for a live demo.

    Instead, if it need to send data from the SecondController (child) to the FirstController (parent), it should use the $emit method.
    Here the javascript code:
    子传($scope.$emit)父接收($scope.$on)
    angular.module('myApp', [])
    .controller('ParentCtrl', ['$scope', function ($scope) {
    $scope.message = "Some text in parent";
    $scope.$on("update_parent_controller", function(event, message){
    $scope.message = message;
    });

    }])
    .controller('ChildCtrl', ['$scope', function ($scope) {
    $scope.clickFunction = function() {
    $scope.message = "Parent updated";

    $scope.$emit('update_parent_controller', $scope.message);
    }

    }]);

    Here a plunker for a live demo.

    Finally, here a little trick where two controller have no parent/child relationship.
    It should pass data from one controller through $rootScope and the $broadcast method.
    Here the javascript code:
    兄弟传($rootScope.$broadcast)兄弟接收($rootScope.$on)
    angular.module('myApp', [])
    .controller('FirstCtrl', ['$scope', '$rootScope', function($scope, $rootScope) {
    $scope.message = "Clicked!";

    $rootScope.clickFunction = function() {
    $rootScope.$broadcast("Update", $scope.message);
    };
    }])
    .controller('SecondCtrl', ['$scope','$rootScope', function($scope,$rootScope) {
    $scope.message = "Waiting for a click...";

    $rootScope.$on("Update", function(event, message) {
    $scope.message = message;
    });
    }]);

    Here a plunker for a live demo.

    以上三个Demo 打不开,需要翻墙。
     
  • 相关阅读:
    直线的中点Bresenham算法的实现
    使用git 将自己的本地文件git到github上面的完整过程
    利用Microsoft VC++6.0 的MFC 的绘图工具实现简单图形的绘制
    github常见操作和常见错误及其解决办法
    浅谈软件配置管理工具(github & SVN)
    为Github 托管项目的访问添加SSH keys
    jQuery:用 lightTreeview 实现树形分类菜单的功能 展开收缩分类代码
    程序设计7大面向对象设计原则
    计算机组成原理实验之模拟整机实验考核试题
    计算机组成原理实验之CPU组成与指令周期实验
  • 原文地址:https://www.cnblogs.com/share123/p/4153275.html
Copyright © 2011-2022 走看看