如何在使用$window.location更改位置后获得更新的($scope)数据
How to get updated ($scope) data after changing location with $window.location
在我的AngularJS应用程序中,我有一个更新表单,它将允许用户发布更新。发布更新工作如预期和我的JSON文件被立即更新。当用户按下保存更新按钮时,我希望应用程序返回到主页面,为此我使用$window.location.href
。
主页由我的data-service接收的数据组成,但是当应用程序提交表单后返回主页时,这些数据不会更新。如果我再次按F5,它将更新数据,但我希望在应用程序返回到主页面后立即更新数据。
由于$window.location.href
将根据我所读取的信息重新加载页面,因此我期望使用$window更改位置。Location也会刷新数据。但是现在,在我的应用程序中似乎不是这样。
有没有办法在不手动刷新页面的情况下获得主页面的信息?
形式控制器:
myDash.controller("dbNewUpdateCtrl", function($scope, $window, dbDataService){
//Save + Cancel
$scope.updateSave = function (item) {
dbDataService.saveUpdate(item);
$window.location.href = "#/dashboard";
}
$scope.updateCancel = function () {
$window.location.href = "#/dashboard";
}
});
Main Page Controller
myDash.controller("dbOverviewCtrl", function($scope, $routeParams, dbDataService){
$scope.items = dbDataService.getData();
});
如果您使用的是ngRoute
模块,则使用$location.path()
方法。它将自动将所有更改应用到$scope
.
如果您没有使用它,那么在更改位置之前,通过调用作用域的$scope.$apply()
方法手动应用更改。
我同意你应该使用$location.path()
而不是$window.location.href
。也重定向你的页面,一旦你保存数据的服务,即在callback
的保存功能。
您可以通过在主页控制器中添加断点来检查页面重定向后得到的结果。如果您从服务中获得正确的数据,则检查数据是否设置为$scope.items
。
如果没有,请使用$scope.apply()
来保存数据,如果你得到$digest()
相关的错误,然后按照下面的代码。
$timeout(function(){
$scope.items = dbTestService.getData();
},0);
此代码将更新$scope.items
的值。
你应该避免窗口位置href,因为它有点打破了spa的逻辑。数据保存在哪里?可能在dbDataService中?您应该在将数据发送到数据库后重新获取它。
- 更新数据,而不是用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 中的更新数据