AngularJS:如何将按钮单击的ng-model值从一个控制器传递到另一个控制器

时间:2017-08-22 19:14:37

标签: angularjs

我有一个按钮,我将ng-model值作为参数传递给它的ng-click功能,现在执行ng-click功能之后,我想将ng-model值发送给另一个控制器,如何我可以使用angular吗?

  

有办法做到这一点吗?

3 个答案:

答案 0 :(得分:1)

控制器之间的通信方式有很多种。

  1. 使用其他评论中提到的$ broadcast,或
  2. 使用$ emit
  3. 像这样......

    function Controller1($scope) 
    {
        $scope.$on('myEvent', function(event, args) {
            // do the event
        });
      // another controller, directive
    }
    
    function Controller2($scope) 
    {
      $scope.$emit('myEvent', args);
    }
    

答案 1 :(得分:0)

1.在第一个控制器中,你可以这样做:

$ rootScope。$ broadcast(' eventName',value);

并在第二个控制器中收听事件:

$ scope。$ on(' eventName',function(event,value){// your code});

2.在第一个控制器中将值分配给$ rootScope变量,然后从另一个控制器访问。例如 在第一个控制器

$ rootScope.TestValue =" 10";

在第二个控制器中

<强> $ scope.receiveValue = $ rootScope.TestValue;

3。AngularJS- How to pass data from one controller to another on ng-click()?

答案 2 :(得分:-2)

使用角度服务在2个控制器之间进行通信。 观看此Video

是的$ broadcast将为您效劳。

以下是一些重要部分:

  1. 创建实现消息总线功能的服务(例如$scope实例)
  2. 向两个控制器注入服务
  3. 来自一个控制器的
  4. $broadcast()事件
  5. 在另一个
  6. 中订阅$on()的活动

    示例:

    <强> HTML

    <div ng-controller="ctrl1 as ctrl1">
      <button ng-click="ctrl1.hello()">Say hello</button>
    </div>
    <div ng-controller="ctrl2 as ctrl2">{{ctrl2.messages}}</div>
    

    <强>的JavaScript

    angular.module('app', [])
    .service('messageBus', ['$rootScope', function($rootScope) {
      return $rootScope.$new();
    }])
    .controller('ctrl1', ['messageBus', function(messageBus) {
      this.hello = function() {
        messageBus.$broadcast('hello', 'Hi! '); // <= send message
      }
    }])
    .controller('ctrl2', ['messageBus', function(messageBus) {
      var ctrl2 = this;
      this.messages = '';
      console.log(messageBus.mb)
      messageBus.$on('hello', function(evt, msg) { // <= receive message
        ctrl2.messages += msg;
      });
    }]);