javascript - 如何在 AngularJS 中 Controller 之间进行通信?

标签 javascript angularjs angularjs-scope rootscope

我正在编写一个 Controller 。该 Controller 必须与其他 Controller 通信。但不知道可以吗?

HTML:

<div data-ng-app="TestApp">
<div data-ng-controller="menuCtrl">
    <ul>
        <li> <a data-ng-click="Click()">
            Menü1</a>
        </li>
    </ul>
</div>
<div data-ng-controller="pageCtrl">
    <hr/> 
    <button data-ng-click="getText()">GetText</button>
    <br/>
    <strong data-ng-model="boldText"> {{boldText}}</strong>
</div>

JS:

var app = angular.module('TestApp', []);

app.controller('menuCtrl', function ($rootScope, $scope) {
    $scope.Click = function () {
    //???
    };
})
.controller('pageCtrl', function ($rootScope, $scope) {

    $scope.getText = function () {
        $scope.boldText = 'tst';
    };
});

我修复了 JSfiddle 上的示例:sample

最佳答案

您可以通过广播轻松实现这一点:

var app = angular.module('TestApp', []);

app.controller('menuCtrl', function ($rootScope, $scope) {
    $scope.Click = function () {
        $scope.$broadcast('MyClickEvent', {
           someProp: 'Clicking data!' // send whatever you want
        });

    };
})

.controller('pageCtrl', function ($rootScope, $scope) {

   $scope.getText = function () {
       $scope.boldText = 'tst';
   };
   $scope.$on('MyClickEvent', function (event, data) {
        console.log(data); // 'Data to send'
   });
});

关于javascript - 如何在 AngularJS 中 Controller 之间进行通信?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28449734/

相关文章:

javascript - 如何运行远程 PHP 脚本,然后点击 HTML 页面中的链接

javascript - jQuery 突出显示文本无法使用 .css ("background-color")

angularjs - 我正在尝试刷新有关 angularjs Controller 成功的页面。

angularjs - 隔离作用域绑定(bind)类型

javascript - AngularJS 中与后端服务通信的最佳方法是什么

JavaScript:调整笔记本电脑浏览器窗口大小 ("mobile"- -"desktop"- -"mobile")不会重新启动菜单状态

javascript - Tablesorter AJAX 分页。如何与后端 JSON 正确交互?

angularjs - 如何在AngularJS服务Jasmine测试中模拟$ http?

angularjs 指令 - 获取元素绑定(bind)的文本内容

javascript - 在指令中使用 $watch 进行了一个小实验