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

QQ登录

只需一步,快速开始

查看: 5610|回复: 14

[结贴] w页面onload方法加载数据问题

[复制链接]

38

主题

132

帖子

360

积分

中级会员

Rank: 3Rank: 3

积分
360
QQ
发表于 2019-5-17 09:04:55 | 显示全部楼层 |阅读模式
我现在有个w页面,有onload方法onLoad="modelLoad",也有data数据:
<div component="$UI/system/components/justep/data/data" autoLoad="false"
    xid="indexData" xui:parent="model" xui:update-mode="insert">
    <column name="weather" type="String" xid="xid1"/>  
    <data xid="default1">[{}]</data>
  </div>

页面中写了加载indexData的数据的div:
<div xid="h3" bind-text="$model.indexData.ref(&quot;weather&quot;)"></div>

现在modeload方法中,weather的值是通过访问互联网接口获取的天气信息,这个信息返回数据可能要1-2秒钟,此时modeload方法已经加载完毕,所以weather的值就变成了null,请问怎么能等weather的值获取到之后,再显示页面呢?

发表于 2019-5-17 09:35:03 | 显示全部楼层
可以在 onModelConstructDone 事件中加载数据,这个时候页面还没渲染,data已经初始化号了!
qq:1912779713
WeX5教程--WeX5下载
回复 支持 反对

使用道具 举报

38

主题

132

帖子

360

积分

中级会员

Rank: 3Rank: 3

积分
360
QQ
 楼主| 发表于 2019-5-17 09:44:11 | 显示全部楼层
liangyongfei 发表于 2019-5-17 09:35
可以在 onModelConstructDone 事件中加载数据,这个时候页面还没渲染,data已经初始化号了!
...

还是不行,从console报出来的数据来看,data初始化完毕了,weather信息才从互联网中读回来,而此时,页面数据data已经加载完了,weather依然是没返回之前的null
回复 支持 反对

使用道具 举报

发表于 2019-5-17 09:50:45 | 显示全部楼层
ttszily 发表于 2019-5-17 09:44
还是不行,从console报出来的数据来看,data初始化完毕了,weather信息才从互联网中读回来,而此时,页面数据d ...

你是在data组件的onCustomRefresh 事件中加载数据的吗??
qq:1912779713
WeX5教程--WeX5下载
回复 支持 反对

使用道具 举报

38

主题

132

帖子

360

积分

中级会员

Rank: 3Rank: 3

积分
360
QQ
 楼主| 发表于 2019-5-17 10:09:03 | 显示全部楼层
liangyongfei 发表于 2019-5-17 09:50
你是在data组件的onCustomRefresh 事件中加载数据的吗??

不是,我是通过onload加载数据,然后通过bind-text="$model.indexData.ref(&quot;weather&quot;)"显示数据,我把data加了onCustomRefresh ,也还是不行
回复 支持 反对

使用道具 举报

38

主题

132

帖子

360

积分

中级会员

Rank: 3Rank: 3

积分
360
QQ
 楼主| 发表于 2019-5-17 10:12:27 | 显示全部楼层
liangyongfei 发表于 2019-5-17 09:50
你是在data组件的onCustomRefresh 事件中加载数据的吗??

现在的主要问题是,我在事件中复制:
                var indexdata = this.comp("indexData");
                indexdata.newData({
                        "defaultValues" : [{
                                "user" : user,
                                "date" : d,
                                "weekday" : realweek,
                                "weather" : w
                        }]
                        });
而代表weather的w的值,是在给indexData赋值之后才获得的(要到互联网获取,延迟1-2秒),在这1-2秒的时间,indexData的值已经赋完了,所以w还是null呢
回复 支持 反对

使用道具 举报

发表于 2019-5-17 11:12:03 | 显示全部楼层
ttszily 发表于 2019-5-17 10:12
现在的主要问题是,我在事件中复制:
                var indexdata = this.comp("indexData");
                indexdata.newData({

你应该在请求成功事件中赋值的啊
一般data组件是自己接管onCustomRefresh事件,然后ajax或者其他方式请求获取数据后,调用data.loadData()  加载到data组件中的!
参考案例类似
/UI2/demo/acc_data/list.w
qq:1912779713
WeX5教程--WeX5下载
回复 支持 反对

使用道具 举报

97

主题

580

帖子

1359

积分

金牌会员

Rank: 6Rank: 6

积分
1359
QQ
发表于 2019-5-17 12:02:44 | 显示全部楼层
ttszily 发表于 2019-5-17 10:12
现在的主要问题是,我在事件中复制:
                var indexdata = this.comp("indexData");
                indexdata.newData({

按你这逻辑,你newData完事之后再调用一下refreshData()做一下data的刷新
传说中路过
回复 支持 反对

使用道具 举报

发表于 2019-5-17 13:16:44 | 显示全部楼层
carbinechun 发表于 2019-5-17 12:02
按你这逻辑,你newData完事之后再调用一下refreshData()做一下data的刷新

为什么newData之后做刷新,应该数刷新之后再加数据的
或者说刷新的时候,直接就把构造好的数据放到data里了,loadData就可以加进去,不必非得newDate   ,除非你是要保存数据库,行状态是新增?
qq:1912779713
WeX5教程--WeX5下载
回复 支持 反对

使用道具 举报

38

主题

132

帖子

360

积分

中级会员

Rank: 3Rank: 3

积分
360
QQ
 楼主| 发表于 2019-5-17 15:20:35 | 显示全部楼层
liangyongfei 发表于 2019-5-17 13:16
为什么newData之后做刷新,应该数刷新之后再加数据的
或者说刷新的时候,直接就把构造好的数据放到data里 ...

是我还没表述清楚么?
现在问题是,我有一个页面,定义了data,页面加载onload方法,在onload方法中给data赋值,但是data的值,需要过1-2秒之后才能获得,此时页面早已加载完毕,data的数据还没得到就已经newdata完毕了,这时过了1-2秒返回的数据再怎么更新到页面上?

或者说,有什么办法.能让已经加载完毕的页面,再次更新data数据?
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-23 02:21 , Processed in 0.074995 second(s), 23 queries .

Powered by Discuz! X3.4

© 2001-2013 Comsenz Inc.

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