使用 Angular 服务共享和更新数据
Share and update data using Angular service
我有一个调用API的服务,如下所示:
app.service("GetDivision", ["$http", function($http){
this.division = function(divisionNumber){
return $http.post("/api/league", {division:divisionNumber}).success(function(data){
return data;
});
}
}]);
然后,我有 2 个(或更多(控制器调用该服务:GetDivision.division(number);
现在,控制器 A 加载从服务获取的数据,并将其显示在 HTML 表或类似内容中。控制器 B 具有更新数据库中数据的功能。发生这种情况时,我需要更新从控制器 A 生成的 HTML。
所以我认为我需要执行以下操作之一,但也不明白该怎么做:
- 当控制器 B 更新数据时,告诉控制器 A 向服务发出更新数据的新请求。
- 当控制器 B 更新数据时,还要更新包含服务中的数据的变量。然后,控制器 A 监视服务中的变量更改并更新 HTML。
有多种方法可以解决这个问题。
最简单的方法是$rootScope.$broadcast(...)
控制器 B 何时更新服务数据。在其他任何地方,您都会监听$scope.$on(...)
该更改事件,并更新数据。
这种方法不是最好的,因为您最终会监听来自源代码中未知位置的广播。使其更难维护。
更好的方法是使用适当的范围层次结构。
父指令可以调用 $scope.$broadcast(...)
向所有子指令发送消息。因此,您将创建一个包含指令 A 的指令 B。然后,指令 A 可以侦听来自指令 B 的更改。
有时这不是一种可能的方法,指令 B 必须是指令 A 的子级。在这种情况下,您可以使用指令的require
功能。这会将控制器从 A 注入到指令 B 中。进行更改时,调用控制器 A 的方法以通知它更改。
相关文章:
- 更新数据,而不是用javascript和jquery将其添加到我的表中
- JQGrid使用服务器编辑后的更新数据刷新数据
- 使用odata 4的jaydata 1.5和保存/更新数据时的错误
- 使用引导时间选取器时,没有更新数据ng模型值
- AngularJS中超时后没有更新数据
- jQuery动态更新数据键和值
- 在简单的可重用 D3 图表中更新数据
- Node/Express 无法正确更新数据模型
- 如何在jQuery中的单个保存按钮上更新数据和添加数据
- 如何使用Jquery更新数据确认属性中的消息
- 更新数据后保留D3图的位置
- 使用$watch更新数据,ng重复不反映更改
- 在OpenCart中,我们如何实时更新数据
- 表单在每个页面中 - 仅在特定页面上处理它 - 如果当前不在页面上 - 重定向 - 否则 - 使用 AJAX 更新数据
- 调整窗口大小时更新数据属性
- Firebase赢得't更新数据
- Rails和jQuery-尝试使用setTimeout主动更新数据
- Lawnchair.js未更新数据
- 更新数据时的React.js生命周期
- enter() 和 exit() 如何检测 D3 中的更新数据