一个AngularJS控制器可以调用另一个吗?

JavaScript

猿神奇梅

2020-03-12

一个控制器可以使用另一个控制器吗?

例如:

该HTML文档仅MessageCtrlmessageCtrl.js文件中打印由控制器传递的消息

<html xmlns:ng="http://angularjs.org/">
<head>
    <meta charset="utf-8" />
    <title>Inter Controller Communication</title>
</head>
<body>
    <div ng:controller="MessageCtrl">
        <p>{{message}}</p>
    </div>

    <!-- Angular Scripts -->
    <script src="http://code.angularjs.org/angular-0.9.19.js" ng:autobind></script>
    <script src="js/messageCtrl.js" type="text/javascript"></script>
</body>
</html>

控制器文件包含以下代码:

function MessageCtrl()
{
    this.message = function() { 
        return "The current date is: " + new Date().toString(); 
    };
}

它只是打印当前日期;

如果我要添加另一个控制器,DateCtrl它将特定格式的日期返回给MessageCtrl,那么该怎么做呢?DI框架似乎与XmlHttpRequests服务有关。

第937篇《一个AngularJS控制器可以调用另一个吗?》来自Winter(https://github.com/aiyld/aiyld.github.io)的站点

2个回答
梅卡卡西Eva 2020.03.12

实际上,使用发射和广播效率不高,因为事件在作用域层次结构中上下起泡,对于复杂的应用程序而言,它很容易降级为性能瓶颈。

我建议使用服务。这是我最近在我的一个项目-https: //gist.github.com/3384419中实现它的方式

基本思想-将pub-sub / event总线注册为服务。然后将事件总线注入您需要订阅或发布事件/主题的地方。

逆天米亚 2020.03.12

另外两个小提琴:(非服务方法)

1)对于$scope父子控制器-使用父控制器发出/广播事件。 http://jsfiddle.net/laan_sachin/jnj6y/

2)$rootScope在不相关的控制器上使用。 http://jsfiddle.net/VxafF/

问题类别

JavaScript Ckeditor Python Webpack TypeScript Vue.js React.js ExpressJS KoaJS CSS Node.js HTML Django 单元测试 PHP Asp.net jQuery Bootstrap IOS Android