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

QQ登录

只需一步,快速开始

查看: 4218|回复: 13

[处理中3] 关于Data加载数据问题

[复制链接]

7

主题

33

帖子

71

积分

初级会员

Rank: 2

积分
71
QQ
发表于 2016-4-27 16:39:22 | 显示全部楼层 |阅读模式
如题,在浏览器中已经打印了从数据库读取的数据并转换成json格式,且符合Data组件的JSON数据格式,如图:
22.png
以下是js代码:
    Model.prototype.modelParamsReceive = function(event){
        var data = this.comp("news_wapData");
        //var title = event.params.title;
        var type = event.params.type;
        var class_id = event.params.class_id;
        
        var sFilter = "type =" + type +" and class_id = " +class_id;
        
        //alert(sFilter);
        //alert(class_id);
   
        justep.Baas.sendRequest({
            "url" : "/baojia/baojia",
            "action" : "queryNewsWap",
            "async" : false,
            "params" : {
                columns : "title",  //
                limit : "0,4",
                filters : sFilter
                //type : type,
                //class_id : class_id
            },
            "success" : function(result) {
                if (result !== null) {
                var json = JSON.stringify(result);  //将json对象result转换成字符串类型
                alert(json);
                    data.loadData(result);
                }else{
                    alert("error");
                }

            }
        });

    };
按道理说 data.loadData(result); 后会把数据加载到Data组件中,但在data组件下的list组件下并没有数据
33.png

QQ:359021540
发表于 2016-4-27 17:56:38 | 显示全部楼层
再执行下list.refresh() 方法试试!

另外加载数据的代码建议写在data组件的 onCustomRefreshData 方法中!
在代码中你直接调用 data.refreshData() 就可以触发onCustomRefreshData  这个事件了!
qq:1912779713
WeX5教程--WeX5下载
回复 支持 反对

使用道具 举报

7

主题

33

帖子

71

积分

初级会员

Rank: 2

积分
71
QQ
 楼主| 发表于 2016-4-28 14:34:35 | 显示全部楼层
liangyongfei 发表于 2016-4-27 17:56
再执行下list.refresh() 方法试试!

另外加载数据的代码建议写在data组件的 onCustomRefreshData 方法中! ...

modelParamsReceive方法中接收上一个页面传过来的参数,type和class_id,这两个参数是查询数据库里用到的where条件,如果在onCustomRefreshData方法中加载数据库的话,要怎么引用这两个参数呢?还有就是从后端传到前端的字段title的value值应该是中文的,怎么变成了一串字符呢?以下是后端的php代码:
class Baojia {

    public static function queryNewsWap($params, $context) {

        $type = isset($params["type"]) ? $params["type"] : null;
        $class_id = isset($params["class_id"]) ? $params["class_id"] : null;
        
        $table = null;
                    
        $conn = $context->Connection("baojia");  //baojia是mysql中的库
        
        try{
        
           $sql = "SELECT title , up_date FROM news_wap where type = ".$type." and class_id = ".$class_id." order by id desc limit 0,20";
            
            
            $table = Util::queryDataBySQL($conn, $sql, null, null, null, null);
                  
            $result = Transform::tableToJson($table);
                        
            
            echo json_encode($result);
        
        }
        catch(Exception $e)
        {
            echo $e->getMessage();
        }        

    }

}

QQ:359021540
回复 支持 反对

使用道具 举报

发表于 2016-4-28 15:41:16 | 显示全部楼层
rgjmgz 发表于 2016-4-28 14:34
modelParamsReceive方法中接收上一个页面传过来的参数,type和class_id,这两个参数是查询数据库里用到的 ...

变量,可以定义个全局的变量比如this.type = type;
在js中都可以获取了!

title中文问题,可能输编码设置问题!
加个转码使用 urldecode 方法试试!
qq:1912779713
WeX5教程--WeX5下载
回复 支持 反对

使用道具 举报

7

主题

33

帖子

71

积分

初级会员

Rank: 2

积分
71
QQ
 楼主| 发表于 2016-4-29 15:04:39 | 显示全部楼层
liangyongfei 发表于 2016-4-28 15:41
变量,可以定义个全局的变量比如this.type = type;
在js中都可以获取了!

加了this 设置了全局变量,可是发现onCustomRefreshData方法然后再去执行modelParamsReceive方法,导致onCustomRefreshData根本就得不到上一个页面传过来的参数,然后试了下在onCustomRefreshData方法中执行this.type = event.params.type;系统提示执行错误,以下是代码:
    Model.prototype.modelParamsReceive = function(event){
        //var title = event.params.title;
        this.type = event.params.type;
        this.class_id = event.params.class_id;
   
        
        //alert(sFilter);
        alert(this.class_id);

    };


    Model.prototype.news_wapDataCustomRefresh = function(event){
        var data = this.comp("news_wapData");
        var list = this.comp("newList");
        alert(this.class_id);
        var    params = {
                type : this.type,
                class_id : this.class_id
            };        
        justep.Baas.sendRequest({
            "url" : "/baojia/baojia",
            "action" : "queryNewsWap",
            "async" : false,
            "params" : params,
            "success" : function(result) {
                if (result !== null) {
                var json = JSON.stringify(result);  //将json对象result转换成字符串类型
                alert(json);
                    data.loadData(result);
                    list.refresh() ;
                }else{
                    alert("error");
                }

            }
        });
    };


另一个问题是:在数据库里面取出的数据中title字段的内容都是不同的,可是执行list.refresh();之后显示的内容都是一样的
1.png 2.png

QQ:359021540
回复 支持 反对

使用道具 举报

发表于 2016-4-29 16:36:18 | 显示全部楼层
rgjmgz 发表于 2016-4-29 15:04
加了this 设置了全局变量,可是发现onCustomRefreshData方法然后再去执行modelParamsReceive方法,导致on ...

需要吧Data组件的autoLoad属性设置为false
然后再modelParamsReceive  事件中调用data.refreshData()  这样就可以触发onCustomRefreshData 事件了!而且也可以使用参数!
qq:1912779713
WeX5教程--WeX5下载
回复 支持 反对

使用道具 举报

7

主题

33

帖子

71

积分

初级会员

Rank: 2

积分
71
QQ
 楼主| 发表于 2016-4-29 16:54:45 | 显示全部楼层
那么第二个问题呢?list.refresh();后怎么都是同一条数据呢?
QQ:359021540
回复 支持 反对

使用道具 举报

发表于 2016-4-29 17:38:30 | 显示全部楼层
rgjmgz 发表于 2016-4-29 16:54
那么第二个问题呢?list.refresh();后怎么都是同一条数据呢?

list 里面的 组件 bind-ref 属性应该直接设置 val('字段') 即可,
表示循环显示行的数据!如果你写成 data.val() 的形式。是表示选中的当前行数据!
qq:1912779713
WeX5教程--WeX5下载
回复 支持 反对

使用道具 举报

7

主题

33

帖子

71

积分

初级会员

Rank: 2

积分
71
QQ
 楼主| 发表于 2016-4-30 16:46:17 | 显示全部楼层
liangyongfei 发表于 2016-4-29 16:36
需要吧Data组件的autoLoad属性设置为false
然后再modelParamsReceive  事件中调用data.refreshData()  这 ...

已经将Data组件中的autoLoad设置为false了,但还是优先执行onCustomRefresh方法
QQ:359021540
回复 支持 反对

使用道具 举报

7

主题

33

帖子

71

积分

初级会员

Rank: 2

积分
71
QQ
 楼主| 发表于 2016-4-30 16:54:28 | 显示全部楼层
本帖最后由 rgjmgz 于 2016-4-30 17:07 编辑
liangyongfei 发表于 2016-4-29 17:38
list 里面的 组件 bind-ref 属性应该直接设置 val('字段') 即可,
表示循环显示行的数据!如果你写成 dat ...

3444.png

ref里面的选择框里没有val的设置,只有ref,设置成ref还是不行的。

在bing-text属性框里面设置了val,结果还是不行:
666666.png

QQ:359021540
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-9 11:41 , Processed in 0.115586 second(s), 26 queries .

Powered by Discuz! X3.4

© 2001-2013 Comsenz Inc.

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