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

QQ登录

只需一步,快速开始

查看: 2561|回复: 12

[结贴] scrollView滚动到最后一行 没反应

[复制链接]

20

主题

53

帖子

151

积分

初级会员

Rank: 2

积分
151
QQ
发表于 2017-3-29 14:22:08 | 显示全部楼层 |阅读模式
scrollView 中嵌套listview
Model.prototype.modelParamsReceive = function(event) {
  var data = event.params;
  
  lxrguid = data.guid;
  var name = data.title;
  var length = name.length;
     if(length>10){
      name=name.substring(0,5)+"..."+name.substring(length-3,length);
     }
  
  var title = this.comp("title");
  title.setTitle(name);  
  var testData = this.comp("testData");
  var  self= this;
  
  $.ajax({
   type : "post",
   url : window.webservice + "GetContactHistory",
   async : false,// false同步,默认true异步
    data:{
    "userguid":localStorage.getItem("GUID"),
    "contacterguid":lxrguid,
    "identity":localStorage.getItem("identity")
    },
   dataType : "json",
   cache : false,
   success : function(data) {
    if (data.success == "true") {
     testData.loadData(data.data);
   
    }
   },
   error : function() {
    justep.Util.hint("加载数据失败");
   }
  });
   this.comp('scrollView1').scrollTo('end');
};
进入页面接收数据并查询 显示 最后滚到scrollview最后一行  
数据显示正常 但是没有滚动到最后一行
this.comp('scrollView1').scrollTo('end');这行代码放到单独的点击事件中可以正常执行
这是什么问题 该怎么改啊??
发表于 2017-3-29 14:26:20 | 显示全部楼层
可能list还没渲染完呢!所以在此执行his.comp('scrollView1').scrollTo('end');不起作用!!
你可以使用setTimeout 延迟执行试试看!
qq:1912779713
WeX5教程--WeX5下载
回复 支持 反对

使用道具 举报

20

主题

53

帖子

151

积分

初级会员

Rank: 2

积分
151
QQ
 楼主| 发表于 2017-3-29 14:35:02 | 显示全部楼层
liangyongfei 发表于 2017-3-29 14:26
可能list还没渲染完呢!所以在此执行his.comp('scrollView1').scrollTo('end');不起作用!!
你可以使用set ...

嗯 是这个原因 但是我设置timeout1000 会出现先是正常显示 然后再跳到最后一行中间有停顿   list渲染完毕有监听吗??
回复 支持 反对

使用道具 举报

发表于 2017-3-29 14:39:01 | 显示全部楼层
feh10545 发表于 2017-3-29 14:35
嗯 是这个原因 但是我设置timeout1000 会出现先是正常显示 然后再跳到最后一行中间有停顿   list渲染完毕 ...

没有找到!只有AfterRender 事件,表示每一行渲染完执行一次的事件!!
或者你定义一个变量this.i = 0;
在中AfterRender  事件中 每次this.i++
判断当i 和 data.count() 相对的时候!!就执行代码!

qq:1912779713
WeX5教程--WeX5下载
回复 支持 反对

使用道具 举报

20

主题

53

帖子

151

积分

初级会员

Rank: 2

积分
151
QQ
 楼主| 发表于 2017-3-29 15:21:13 | 显示全部楼层
i 加出来的数比data.count  大  没法判断最后一行 正在找匹配是否为最后一行的方法....
回复 支持 反对

使用道具 举报

发表于 2017-3-29 15:23:53 | 显示全部楼层
feh10545 发表于 2017-3-29 15:21
i 加出来的数比data.count  大  没法判断最后一行 正在找匹配是否为最后一行的方法.... ...

那就不用i++ 了 可能会多执行!!
那就判断list中li节点的个数!
使用jquery 判断li 标签的个数!和data.count()相等就可以了!
qq:1912779713
WeX5教程--WeX5下载
回复 支持 反对

使用道具 举报

20

主题

53

帖子

151

积分

初级会员

Rank: 2

积分
151
QQ
 楼主| 发表于 2017-3-29 15:45:02 | 显示全部楼层
liangyongfei 发表于 2017-3-29 15:23
那就不用i++ 了 可能会多执行!!
那就判断list中li节点的个数!
使用jquery 判断li 标签的个数!和data. ...

        Model.prototype.list2AfterRender = function(event){
        var testData = this.comp("testData");
        var self = this;
        this.sum = this.sum+1;
                window.setTimeout(function() {
                        self.comp('scrollView1').scrollTo('end');
                }, 500);
        };  
在这个监听里执行   不加timeout也不能到最后一行  
回复 支持 反对

使用道具 举报

发表于 2017-3-29 16:09:31 | 显示全部楼层
feh10545 发表于 2017-3-29 15:45
Model.prototype.list2AfterRender = function(event){
        var testData = this.comp("testData");
        var s ...

建议不要判断  this.sum 了!!你确定下这个事件执行的次数一定等于data.count()吗?
还有就是判断啊!没有判断setTimeout会一直执行的!!还不如写在onload中呢!
qq:1912779713
WeX5教程--WeX5下载
回复 支持 反对

使用道具 举报

20

主题

53

帖子

151

积分

初级会员

Rank: 2

积分
151
QQ
 楼主| 发表于 2017-3-29 16:17:46 | 显示全部楼层
liangyongfei 发表于 2017-3-29 16:09
建议不要判断  this.sum 了!!你确定下这个事件执行的次数一定等于data.count()吗?
还有就是判断啊! ...

加判断是执行了 但是 不加timeout 还是不能滚到最后一行   这种情况 在AfterRender 执行scrollTo('end')就没有意义
回复 支持 反对

使用道具 举报

发表于 2017-3-29 16:57:17 | 显示全部楼层
feh10545 发表于 2017-3-29 16:17
加判断是执行了 但是 不加timeout 还是不能滚到最后一行   这种情况 在AfterRender 执行scrollTo('end') ...

那就没有其他事件了!!就在onload 中使用setTimeout 吧。。
你的list limit属性是多少??每次渲染多少条确定吗?
qq:1912779713
WeX5教程--WeX5下载
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-7-5 21:09 , Processed in 0.053586 second(s), 23 queries .

Powered by Discuz! X3.4

© 2001-2013 Comsenz Inc.

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