Angular控制器与服务的通信
angular controller communication with a service
我想与另一个控制器通信。
var module = angular.module("app", []);
module.service("MessageAggregator", function(){
var service = {};
service.message = {};
service.setMessage = function(message){
service.message = message;
};
return service;
});
function firstController($scope, MessageAggregator){
$scope.sendRequest = function(){
MessageAggregator.setMessage({type: "FeatureSet"});
};
}
function secondController($scope, MessageAggregator){
$scope.info = MessageAggregator;
$scope.message = MessageAggregator.message;
}
我想在html视图中使用MessageAggregator服务数据。
<div ng-app="app">
<div ng-controller="firstController">
<button ng-click="sendRequest()">Request</button>
</div>
<hr/>
<div ng-controller="secondController">
<h3>info: {{info}}</h3>
<h3>message: {{message}}</h3>
</div>
</div>
工作代码在这里jsfiddle
<h3>message: {{message}}</h3> not populated and working
<h3>info: {{info}}</h3> is working
你应该让你的控制器在你的模块
module.controller("firstController", function($scope, MessageAggregator){
$scope.sendRequest = function(){
MessageAggregator.setMessage({type: "FeatureSet"});
};
});
module.controller("secondController", function($scope, MessageAggregator){
$scope.info = MessageAggregator;
$scope.message = MessageAggregator.message;
});
您需要显式地为MessageAggregator.message
对象添加监视侦听器:
$scope.$watch(function() { return MessageAggregator.message; },
function(newVal, oldVal) { $scope.message = newVal; });
这是一个例子
或者您应该更改service.setMessage
函数,如下所示以保留message
对象引用:
service.setMessage = function (message) {
for (var prop in message) {
if (message.hasOwnProperty(prop)) {
service.message[prop] = message[prop];
}
for(var prop in service.message){
if(!message.hasOwnProperty(prop)){
delete service.message[prop];
}
}
}
};
相关文章:
- 如何使用WCF服务和javascript表单post上传.doc文件
- 监视函数从服务返回不起作用,但作用域函数起作用
- 通过Magento的网络服务检索运费
- 在同一个服务工作者中处理service-worker.js有任何影响吗
- 使用angular.js问题的JavaSpringREST服务
- AngularJS-需要在index.html页面中访问来自服务的数据
- 如何使用HTML5与UDP套接字通信
- 如何在Ionic2测试版中包含Ionic.io服务
- 在 AngularJS 中与后端服务通信的最佳方法是什么?
- 角度模块中的全局通信:事件总线或调解器模式/服务
- 服务和指令之间的通信:依赖关系或或事件
- Chrome 扩展程序与 rest Web 服务通信
- Angular JS-需要与页面上的所有指令进行通信,这些指令来自只运行一次的服务中的代码
- 如何在服务之间进行双向通信
- 客户端js和服务端node.js之间的通信
- Angular控制器与服务的通信
- JavaScript和PHP中的Web服务之间的安全通信
- Backbone.js集合和带参数的Ruby on Rails服务之间的通信
- AngularJS:通过服务在两个作用域/控制器之间进行双向通信
- 通过web服务进行的通信在不同浏览器上的JavaScript之间是否标准化