javascript - angularjs 怎么让$http请求完成后再执行赋值函数?
高洛峰
高洛峰 2017-04-11 13:06:26
[JavaScript讨论组]

定义参数

var data = []

get请求json数据

$http.get("/get")
.then(function (response) {
    data=angular.fromJson(response.data.dt);    //赋值
    });       

输出 只为了说明在外面访问不到

alert(data)

因为下载了一个smark-table模板,改动时候发现,只能在最外层给页面要迭代的json对象赋值,不能嵌套在返回函数里面,原因未知。。。。

最后我得到的输出结果是空的
说明alert在$http之前执行了,或者其他原因
请问有经验的大啊神们 怎么解决

高洛峰
高洛峰

拥有18年软件开发和IT教学经验。曾任多家上市公司技术总监、架构师、项目经理、高级软件工程师等职务。 网络人气名人讲师,...

全部回复(3)
怪我咯

1.按照你提供的代码,
alert(data) 肯定提前执行了,因为AJAX默认的行为是异步的。
2.在模板页面使用数据源的地方,添加ngIf指令,另外如果模板上要用一定要导出到ViewModel对象上。
3.先查看一下是否有异常信息,另外看一下组件相关说明资料。另外也确认一下返回的数据类型和数据结构是否正确,断点调试一下。
4.正常都不用手动进行jsonString的反序列化,如果手动调用,最好加个异常处理代码,另外该接口返回的Content-Type类型是什么?

PHPz
$http.get("/get")
.then(function (response) {
    data=angular.fromJson(response.data.dt);    //赋值
    alert(data)
});
高洛峰

如果在回调的函数里面可以输出data,那你试一下$scope.data=angular.fromJson(response.data.dt); //赋值,然后再外界输出$scope.data.不知道跟你说的问题有没有关系

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号