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

QQ登录

只需一步,快速开始

查看: 3859|回复: 12

[结贴] 关于事件的触发顺序问题,急急急!!!!!!!

[复制链接]

23

主题

70

帖子

160

积分

初级会员

Rank: 2

积分
160
QQ
发表于 2017-7-11 14:16:57 | 显示全部楼层 |阅读模式
现在要从手机的本地通讯录中获取联系人,用的 Model.prototype.modelLoad = function(event){
         document.addEventListener("deviceready", onDeviceReady, false);   
         function onDeviceReady() {         
             var options = new ContactFindOptions();
             options.filter = "";
             options.multiple=true;
             var fields = ["displayName","phoneNumbers"];
             navigator.contacts.find(fields, onSuccess, onError,options);
         }                 
         function onSuccess(contacts) 这个方法,已经能从本地获取到数据了,要绑定在data组件中在页面山显示,用的Model.prototype.data1AfterRefresh = function(event){
                event.source.loadData(userList);
        };方法在绑定数据,现在的问题是调用手机的function onSuccess(contacts)方法比Model.prototype.data1AfterRefresh = function(event)方法执行的慢,是先绑定数据再执行onSuccess,这样的话,绑定的数据肯定是为空的,有没有什么方法使onSuccess方法执行时间在绑定数据之前???求大神,急急急!!!

23

主题

70

帖子

160

积分

初级会员

Rank: 2

积分
160
QQ
 楼主| 发表于 2017-7-11 14:49:43 | 显示全部楼层
没有大神给个答案吗???
回复 支持 反对

使用道具 举报

发表于 2017-7-11 15:27:02 | 显示全部楼层
你应该在 onSuccess 中调用data.refreshData() 方法 刷新数据!
然后 event.source.loadData(userList); 应该写在 data组件的 onCustomRefresh 事件中!
这个事件才表示加载数据接管的事件!

你只需要设置data组件的autoLoad 为false  ,不自动加载!
(如果有list , 也应该设置autoLoad为false)

你只需要在onSuccess中调用data.refreshData() ,触发onCustomRefresh 的时候加载数据即可!


执行corodva的代码可以提前到 onModelConstructDown 事件中!
比onLoad先执行!并且data也初始化完成了!
qq:1912779713
WeX5教程--WeX5下载
回复 支持 反对

使用道具 举报

23

主题

70

帖子

160

积分

初级会员

Rank: 2

积分
160
QQ
 楼主| 发表于 2017-7-11 21:07:12 | 显示全部楼层
用了你说的data.refreshData() 方法,报了这个error,我的data组件的xid是data1,data1.refreshData()也是不行,大神,你说的data是什么呢???
捕获.PNG
回复 支持 反对

使用道具 举报

发表于 2017-7-12 10:14:26 | 显示全部楼层
1234567890123 发表于 2017-7-11 21:07
用了你说的data.refreshData() 方法,报了这个error,我的data组件的xid是data1,data1.refreshData()也是 ...

xid是data1,
那就应该是
this.comp('data1').refreshData()

我说的data就是指 组件对象!
qq:1912779713
WeX5教程--WeX5下载
回复 支持 反对

使用道具 举报

23

主题

70

帖子

160

积分

初级会员

Rank: 2

积分
160
QQ
 楼主| 发表于 2017-7-12 10:19:37 | 显示全部楼层
用了
this.comp('data1').refreshData()
出现这个错误,是什么原因呢
捕获.PNG
回复 支持 反对

使用道具 举报

发表于 2017-7-12 11:21:25 | 显示全部楼层
1234567890123 发表于 2017-7-12 10:19
用了
this.comp('data1').refreshData()
出现这个错误,是什么原因呢

你是在哪儿调用的this.comp
comp 方法不存在!
如果是回调方法中,应该先定义 model对象的变量才行!
http://docs.wex5.com/wex5-ui-question-list-2160
qq:1912779713
WeX5教程--WeX5下载
回复 支持 反对

使用道具 举报

23

主题

70

帖子

160

积分

初级会员

Rank: 2

积分
160
QQ
 楼主| 发表于 2017-7-12 15:18:02 | 显示全部楼层
这又是怎么回事呢???版主
捕获.PNG
回复 支持 反对

使用道具 举报

发表于 2017-7-12 15:51:29 | 显示全部楼层
1234567890123 发表于 2017-7-12 15:18
这又是怎么回事呢???版主

me.comp('data1');

请问你的data组件 的xid 写得是正确的吧! 如果xid 不正确,获取的对象不是data组件对象!
就无法调用refreshData()  方法的!
qq:1912779713
WeX5教程--WeX5下载
回复 支持 反对

使用道具 举报

23

主题

70

帖子

160

积分

初级会员

Rank: 2

积分
160
QQ
 楼主| 发表于 2017-7-12 16:35:04 | 显示全部楼层
liangyongfei 发表于 2017-7-12 15:51
me.comp('data1');

请问你的data组件 的xid 写得是正确的吧! 如果xid 不正确,获取的对象不是data组件 ...

refreshData()方法可以了,我把autoLoad设置为false,autoNew也设置为false,这时,autoLoad为false无效的,然后我把autoLoad设置为false,autoNew也设置为true,data1CustomRefresh方法是不自动加载了,但是event.source.loadData(userList);这个方法没起作用,数据还是显示不出来?求版主了,到底应该怎么写啊???
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-7-12 00:51 , Processed in 0.065724 second(s), 27 queries .

Powered by Discuz! X3.4

© 2001-2013 Comsenz Inc.

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