一个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
服务有关。
回答:
控制器之间有多种通信方式。
最好的一种可能是共享服务:
function FirstController(someDataService) {
// use the data service, bind to template...
// or call methods on someDataService to send a request to server
}
function SecondController(someDataService)
{
// has a reference to the same instance of the service
// so if the service updates state for example, this controller knows about it
}
另一种方法是在范围内发出事件:
function FirstController($scope) {
$scope.$on('someEvent', function(event, args) {});
// another controller or even directive
}
function SecondController($scope)
{
$scope.$emit('someEvent', args);
}
在这两种情况下,您都可以与任何指令进行通信。
以上是 一个AngularJS控制器可以调用另一个吗? 的全部内容, 来源链接: utcz.com/qa/409100.html