起步软件技术论坛
搜索
 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 1827|回复: 9

[结贴] 在异步请求后台数据的情况下,前端控件用bind绑定data显示undefine的问题

[复制链接]

14

主题

56

帖子

326

积分

中级会员

Rank: 3Rank: 3

积分
326
QQ
发表于 2017-1-12 11:16:32 | 显示全部楼层 |阅读模式
在非异步请求数据的情况下,span,label等控件绑定data字段可以正常显示请求回来的数据
但是在异步请求数据的情况下,span,label等控件绑定,显示的却是undefine,请问这个有什么解决办法?

1

主题

6163

帖子

2095

积分

金牌会员

Rank: 6Rank: 6

积分
2095
QQ
发表于 2017-1-12 14:06:54 | 显示全部楼层
你做了一个啥样的异步请求?你可不可以具体描述一下
回复 支持 反对

使用道具 举报

14

主题

56

帖子

326

积分

中级会员

Rank: 3Rank: 3

积分
326
QQ
 楼主| 发表于 2017-1-12 14:35:03 | 显示全部楼层
1、先拖一个data组件到model,然后设置好字段名和类型

2、接管data组件的onCustomRefresh事件,在事件中用
var data1 = this.comp("data1");
                $.ajax({
                        type:"GET",
                        dataType : "json",
                        url: "http://localhost/api/getlist/getlist",
                        async:true,
                        cache:false,
                        success: function(result)
                        {
                                if(result.result == 1)
                                {
                                        data1.loadData(result.data, false);
                                }
                                else
                                {
                                        alert(result.message);
                                }
                        }
                });
  http://localhost/api/getlist/getlist 是我用.net写的一个webapi,返回一组数据

3、在页面上拖一个span或label或output控件,在bind-text或bind-ref中绑定data组件的字段,用来显示从服务端取回的值

4、在 model的onLoad事件写 data.refreshData();

如果 async: false ,则显示值正确
如果 async: true ,则显示 undefined
回复 支持 反对

使用道具 举报

14

主题

56

帖子

326

积分

中级会员

Rank: 3Rank: 3

积分
326
QQ
 楼主| 发表于 2017-1-12 14:35:28 | 显示全部楼层
半导体 发表于 2017-1-12 14:06
你做了一个啥样的异步请求?你可不可以具体描述一下

帮忙看一下,谢谢
回复 支持 反对

使用道具 举报

14

主题

56

帖子

326

积分

中级会员

Rank: 3Rank: 3

积分
326
QQ
 楼主| 发表于 2017-1-12 16:27:29 | 显示全部楼层
半导体 发表于 2017-1-12 14:06
你做了一个啥样的异步请求?你可不可以具体描述一下

最简单就是 淘宝 例子里面,把js/loadData.js中的 async = true,然后打开淘宝例子的商品详情页,可以看到详情页所有内容都不显示了
回复 支持 反对

使用道具 举报

14

主题

56

帖子

326

积分

中级会员

Rank: 3Rank: 3

积分
326
QQ
 楼主| 发表于 2017-1-13 15:47:32 | 显示全部楼层
顶一下
回复

使用道具 举报

1

主题

6163

帖子

2095

积分

金牌会员

Rank: 6Rank: 6

积分
2095
QQ
发表于 2017-1-13 16:11:27 | 显示全部楼层

当async: true 时,ajax请求是异步的。但是其中有个问题:ajax请求和其后面的操作是异步执行的,那么当请求还未执行完,就可能已经执行了 ajax请求后面的操作,输出时会为空。
回复 支持 反对

使用道具 举报

14

主题

56

帖子

326

积分

中级会员

Rank: 3Rank: 3

积分
326
QQ
 楼主| 发表于 2017-1-17 08:42:16 | 显示全部楼层
半导体 发表于 2017-1-13 16:11
当async: true 时,ajax请求是异步的。但是其中有个问题:ajax请求和其后面的操作是异步执行的,那么当请 ...

是的,我想说的是,控件用bind-text绑定data,似乎不是数据感知类的,如果在ajax请求为异步时,可能需要在success里自已刷新控件。不知道我的推论是否正确,如果是的话,那在异步请求数据的情况下,组件绑定到data这种方式就不太适合了,需要采取其他的方式
回复 支持 反对

使用道具 举报

1

主题

6163

帖子

2095

积分

金牌会员

Rank: 6Rank: 6

积分
2095
QQ
发表于 2017-1-17 09:35:37 | 显示全部楼层
cexoboy 发表于 2017-1-17 08:42
是的,我想说的是,控件用bind-text绑定data,似乎不是数据感知类的,如果在ajax请求为异步时,可能需要 ...

对  你的想法是对的
回复 支持 反对

使用道具 举报

14

主题

56

帖子

326

积分

中级会员

Rank: 3Rank: 3

积分
326
QQ
 楼主| 发表于 2017-1-18 10:49:22 | 显示全部楼层
半导体 发表于 2017-1-17 09:35
对  你的想法是对的

明白了,谢谢!可以结贴了
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|X3技术论坛|Justep Inc.    

GMT+8, 2024-4-26 17:29 , Processed in 0.083810 second(s), 23 queries .

Powered by Discuz! X3.4

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表