angularjs 怎么让$http请求完成后再执行赋值函数?
定义参数
var data = []
get请求json数据
$http.get("/get")
.then(function (response) {
data=angular.fromJson(response.data.dt); //赋值
});
输出 只为了说明在外面访问不到
alert(data)
因为下载了一个smark-table模板,改动时候发现,只能在最外层给页面要迭代的json对象赋值,不能嵌套在返回函数里面,原因未知。。。。
最后我得到的输出结果是空的
说明alert在$http之前执行了,或者其他原因
请问有经验的大啊神们 怎么解决
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
1.按照你提供的代码,
alert(data) 肯定提前执行了,因为AJAX默认的行为是异步的。
2.在模板页面使用数据源的地方,添加ngIf指令,另外如果模板上要用一定要导出到ViewModel对象上。
3.先查看一下是否有异常信息,另外看一下组件相关说明资料。另外也确认一下返回的数据类型和数据结构是否正确,断点调试一下。
4.正常都不用手动进行jsonString的反序列化,如果手动调用,最好加个异常处理代码,另外该接口返回的Content-Type类型是什么?
如果在回调的函数里面可以输出data,那你试一下$scope.data=angular.fromJson(response.data.dt); //赋值,然后再外界输出$scope.data.不知道跟你说的问题有没有关系
因为是异步模式
可以利用 promise 在进行异步处理外部访问