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

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

有可能让一个控制器使用另一个控制器吗?

例如:

此HTML文档只打印由MessageCtrl控件中的控制器messageCtrl.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以及获取服务。


胡子哥哥
浏览 1466回答 3
3回答

素胚勾勒不出你

控制器之间的通信方式有多种。最好的办法可能是共享一项服务:function&nbsp;FirstController(someDataService)&nbsp;{ &nbsp;&nbsp;//&nbsp;use&nbsp;the&nbsp;data&nbsp;service,&nbsp;bind&nbsp;to&nbsp;template... &nbsp;&nbsp;//&nbsp;or&nbsp;call&nbsp;methods&nbsp;on&nbsp;someDataService&nbsp;to&nbsp;send&nbsp;a&nbsp;request&nbsp;to&nbsp;server}function&nbsp;SecondController(someDataService)&nbsp;{ &nbsp;&nbsp;//&nbsp;has&nbsp;a&nbsp;reference&nbsp;to&nbsp;the&nbsp;same&nbsp;instance&nbsp;of&nbsp;the&nbsp;service &nbsp;&nbsp;//&nbsp;so&nbsp;if&nbsp;the&nbsp;service&nbsp;updates&nbsp;state&nbsp;for&nbsp;example,&nbsp;this&nbsp;controller&nbsp;knows&nbsp;about&nbsp;it}另一种方式是在作用域上发出事件:function&nbsp;FirstController($scope)&nbsp;{ &nbsp;&nbsp;$scope.$on('someEvent',&nbsp;function(event,&nbsp;args)&nbsp;{}); &nbsp;&nbsp;//&nbsp;another&nbsp;controller&nbsp;or&nbsp;even&nbsp;directive}function&nbsp;SecondController($scope)&nbsp;{ &nbsp;&nbsp;$scope.$emit('someEvent',&nbsp;args);}在这两种情况下,您也可以与任何指令通信。
打开App,查看更多内容
随时随地看视频慕课网APP