角度Ajax时间变量
Angular Ajax temporaly variables
我正在尝试从json文件中获取ajax返回的记录数,但当我尝试打印".success block"外的记录数时,我没有获得".suc成功block"内的值
示例:
var total = 0;
$http.get("json/noticias.json")
.success(function(response) {
$scope.lista = response;
total = response.noticias.length;
alert(total);//Print 3
});
alert(total);//Print 0
我还需要在第二个打印3。
这是因为$http.get()
是一个异步调用,这意味着执行流不会停止,让$http.get()
获取所有值并执行.success()
函数内的逻辑,然后转移到下一个事件序列。
执行流继续,在$http()
调用获取数据并调用.success()
的同时执行下一个语句。因此,在alert()
中首先得到0,然后得到3。因此,在执行$http()
调用之外的alert()
时,由于total
尚未在.success()
回调中更新,因此total
的值仍然是0
。
您应该使用promise和$q来处理$http
调用的成功和错误条件。
var total = 0;
$http.get("json/noticias.json") .success(function(response) {
$scope.lista = response;
response.total = response.noticias.length; ;
alert(total);//Print 3
}).then(
function( response ) {
alert(response.total); //print 3
});
我希望这能帮助
您需要将长度分配给作用域的total
属性,然后您可以在success方法之外访问它,并将其绑定到您的html元素。但请注意,一旦响应可用,您就可以访问total
的更新值。以下应该可以解决您的问题:
$scope.total = 0;
$http.get("json/noticias.json")
.success(function(response) {
$scope.lista = response;
$scope.total = response.noticias.length;
alert($scope.total);//Print 3
});
alert($scope.total);//Print 0
相关文章:
- javascript时间戳插入字符串变量
- 如何组合Datepicker&一个变量中的时间选择器
- JavaScript变量生存时间
- 将日期和时间变量组合为mysqli日期时间字段
- Node.js中的垃圾收集作用域-变量将保持设置状态多长时间
- 如何从html输入类型=“”中只获得Angular控制器变量中的时间值;时间”;
- JavaScript变量在第二次单击事件时间后取消设置
- 为返回的变量添加时间戳
- 单击“在时间存储变量”按钮,以便在触发 ajaxComplete 事件时使用
- 变量和数组将在浏览器内存中保留多长时间
- 从本地存储中获取最后一个变量(按时间)
- 如何在 javascript 中的变量名称中放置时间戳(例如 var a12439853 = 1)
- 事件侦听器会根据一段时间内的点击次数更改变量
- 如果通过 ajax 调用 PHP 页面需要一段时间才能运行/返回(并且它设置了会话变量),则第二次 ajax 调用会看到
- 使用变量作为 setInterval / setTimeout 中的时间
- 是否可以使用 .transition() .duration() 中经过的时间作为变量
- 如何将当前GPS导航器位置设置为destinationA的变量,以查找距离和时间
- 如何用变量表示当前时间
- 从文件与加载JSON作为时间线事件的变量
- 使用时间作为动态变量来比较值