angularjs 怎么让$http请求完成后再执行赋值函数?

发布于 2022-09-04 18:18:23 字数 418 浏览 16 评论 0

定义参数

var data = []

get请求json数据

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

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

alert(data)

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

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

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

白鸥掠海 2022-09-11 18:18:23

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

橙幽之幻 2022-09-11 18:18:23
$http.get("/get")
.then(function (response) {
    data=angular.fromJson(response.data.dt);    //赋值
    alert(data)
});
我一直都在从未离去 2022-09-11 18:18:23

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

黑凤梨 2022-09-11 18:18:23

因为是异步模式
可以利用 promise 在进行异步处理外部访问

    $scope.inCartArr={};
    var config = {method: 'POST',url:url,data:{"id":id}};
    var defered=$q.defer();
    $http(config).
        then(function(response) {
            defered.resolve(response.data);  
        }, function(response) {
             console.log(response);
    });
    
    //外部访问
    var b=defered.promise;
    b.then(function(e){
        console.log(e);
    })
    
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文