角度,数组复制太迟
Angular, array is copied too late
我有一个回调函数,它用于服务器响应中的数据。在函数中,我试图用数据结果填充数组。我正在填充的数组是在插入到我的主应用程序模块中的不同模块的服务中定义的。我正在使用这个方法来访问我所有控制器中的这个数组,某种全局已知的数组。
angular.module('HighLowTodayApp.services', [])
.factory('HLTglobalData',['$http',function($http){
globalData.currentDomainsList = {};
return {
currentDomainsList : globalData.currentDomainsList
}
});
填充数组的回调函数如下所示:
$scope.getDomainsStatisticsSuccess = function(data){
HLTglobalData.currentDomainsList = data.slice();
console.log(JSON.stringify(data));
console.log(JSON.stringify(HLTglobalData.currentDomainsList));
//go to showDomainsList page
$location.path("/showDomainsList");
};
问题是,来自"/showDomainsList"路径的控制器的init()函数比HLTglobalData.currentDomainList.的填充更早被触发
我在提到的init()函数中有一个console.log(JSON.stringfy(HLTglobalData.currentDomainsList)),它在控制台中显示了一个空对象{},而且它在前面显示了来自getDomainsStatisticsSuccess函数。
不知何故,在完成阵列复制之前,它的位置发生了更改。我在所有的项目中都使用了这种方法,这是唯一一个这样的地方。
我忘了提到它在Cordova项目中运行的angular应用程序,但我认为这不应该是一个问题。
知道吗?提前感谢!
因此,处理异步内容的最佳方式是Promise。例如:
```
function myService($q){
var def = $q.defer
$http().then((data) => def.resolve(data))
return def
}
function myCtrl($location) {
myService.then(() => $location.path('/somewhere'))
}
```
相关文章:
- 使用Clipboard.js复制span文本
- ZeroClipboard-在复制之前添加到值
- 如何在android中使用phonegap将文件从一个文件夹移动/复制到另一个文件夹
- 我的职位回报太快了,如何做出承诺
- 复制图像路径以单击它
- CSS-若窗口太小,滚动条会出现在“表格”单元格上
- Wacom stu-430签名捕获速度太慢
- 复制当前url按钮-Javascript
- 具有所有样式的文本正在复制到可编辑文本区域
- 如果使用javascript函数屏幕太小,我该如何更改HTML文件的背景色
- 一个html元素的克隆次数太多
- 加载侦听器上的函数触发得太早
- JavaScript”;复制“;HTML表单
- 使用PHP和ajax传递URL不太正常的变量
- jsPlumb-拖动克隆而不进行复制
- 如何将给定的curl命令复制为jquery ajax请求
- 将对象的孙属性复制到新创建的对象,而无需太多代码
- 角度,数组复制太迟
- 粘性导航太迟了
- 等待异步电话结束-太迟了