AngularJS-第一次运行.service计划发送数据,但没有显示,第二次运行,没有发送数据的计划,但显示了一些
AngularJS - First run of .service plans to send data, but none shows, second run, no plans to send data, but some shows
我的控制器中有以下调用:
.controller('OverviewCtrl', function($http, $rootScope, $scope, tipService, alertService) {
var user = $rootScope.sessionUser;
alertService.getAlert(user).then(function(payload) {
$scope.newAlerts = payload;
console.log('got new alerts: ' + $scope.newAlerts);
$rootScope.unreadAlerts = $scope.newAlerts.length;
});
});
这是警觉性服务:
.service('alertService', function($rootScope) {
var getAlert = function(user) {
var newAlerts = [];
//function calling business logic for eligible alerts
//set up database query (using Parse)
query.equalTo("user", user);
return query.find({
success: function(results) {
var oldAlerts = results;
for (var i=0; i<alerts.length; i++) {
var isNew = true;
for (var j=0; j<oldAlerts.length; j++) {
if (alerts[i].get("callout") === oldAlerts[j].attributes.callout) {
isNew = false;
}
}
if (isNew) {
newAlerts.push(alerts[i]);
alertToSave = alerts[i];
alertToSave.save(null, {
success: function(alert) {
console.log('successfully saved alert: ' + alert.get("callout"));
},
error: function(error) {
console.log('Failed to save new object, with error code: ' + error.message);
}
});
}
}
console.log('about to return new alerts: ' + newAlerts);
return newAlerts;
},
error: function(error) {
console.log("Error: " + error.code + " " + error.message);
}
});
};
return {
getAlert: getAlert
};
});
奇怪的是,第一次运行时(假设实际上有两个新警报),console.log显示:
即将返回新警报:[object object],[object object]
收到新警报:
但第二次运行时,console.log显示:
即将返回新警报:
获得新警报:[object object],[object object]
怎么回事?我在这里错过了什么?
更新
无论出于何种原因,该服务返回的是查询结果,而不是newAlerts数组。作为一种变通方法,我只是将此代码移动到控制器中的一个函数中,并保留用于在服务中查找合格警报的业务逻辑。
我没有看到任何地方定义了警报阵列,也没有向警报阵列添加任何内容。因此,每次将结果/oldAlerts与警报阵列进行比较时,都不会发生任何变化。
我不知道为什么控制器直到第二轮才看到任何东西。尝试使用调试器逐行遍历代码,因为这会让您更好地了解正在发生的事情
无论出于何种原因,服务返回的是查询结果,而不是newAlerts数组。作为一种变通方法,我只是将此代码移动到控制器中的一个函数中,并保留用于在服务中查找合格警报的业务逻辑。
相关文章:
- 如何将json数据显示为html
- 解耦按钮(两个按钮同时切换),并根据数据显示相应的按钮
- 将json提要数据显示为html
- 使用Ajax Get方法将数据显示到特定元素中
- 如何将数据显示为线性highChart
- Json显示来自网站的数据显示仅未定义
- 使 ajax 请求和成功数据显示在 id <选择>选择>部分中
- 在按钮单击时将图像URL数据显示到弹出框中,而无需禁用背景
- 如何在循环中将 json 数据显示为 HTML
- 如何使用javascript在html中将firebase数据显示为列表
- PHP同时循环数组数据显示到javascript中
- 原始图像数据显示
- 如何在 y 轴上将数据显示为 KB、MB、GB、TB
- Ajax 数据显示在包含 10 行的表中
- 如何让 Mathjax.js 与 ANCII.js 将附加的 json 数据显示为正确的公式
- 调用 Worklight 适配器并将列表视图中的 JSON 数据显示为字符串
- Jquery/Javascript Datatables : 如何在行选择时将行数据显示到 html 文本字段中
- 双击 td 时,如何在警告框中将数据库中的数据显示为 html 表
- 日期之间的数据显示所有头
- 如何使用模板中的数据显示谷歌地图