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

QQ登录

只需一步,快速开始

查看: 4024|回复: 11

[结贴] 如何使用从bass服务返回的数据

[复制链接]

10

主题

39

帖子

153

积分

初级会员

Rank: 2

积分
153
QQ
发表于 2016-2-25 01:00:54 | 显示全部楼层 |阅读模式
我是个新手,刚刚接触WeX5,对JS,HTML5也不熟悉,希望大家帮我解答下,谢谢!

问题是这样的,我修改了WeX5中UI2->demo->bass->SimpleData例子 ,给它增加了一个登录按钮,点击登录按钮,向bass发送一个查询请求,从后台数据库里查找到一条记录,然后通过bass请求的succ返回到了resultData里,通过debug方式看到了里面的数据,但是不知道要怎么提取出来?

数据库表格式:  
fID : integer;
fAccount : string;
fPassword : string;
fName : string;
fCorperation : string;

  1.         Model.prototype.button3Click = function(event){
  2.                 debugger;
  3.                 justep.Util.hint( "login" );
  4.                
  5.                 // 获取当前数据对象
  6.                 var data = event.source;
  7.                 // 构造请求参数
  8.                 var params = {
  9.                                 "data" : {
  10.                                         "action" : "queryUser",
  11.                                         // 序列化参数JSON字符串
  12.                                         "params" : { fAccount:"zhouyang", fPassword : "130214" }
  13.                                 }
  14.                 };
  15.                 // 请求成功后的回调方法
  16.                 var success = function(resultData) {
  17.                         debugger;
  18.                         justep.Util.hint( "login succ"  );
  19.                 };
  20.                 // 发送请求
  21.                 Baas.sendRequest({
  22.                         "url" : "/demo", // servlet请求地址
  23.                         "action" : "queryUser", // action
  24.                         "params" : params, // action对应的参数
  25.                         "success" : success // 请求成功后的回调方法
  26.                 });
  27.         };
复制代码
发表于 2016-2-25 10:11:59 | 显示全部楼层
你这个是使用的3.2.1的baas服务做的??
关于data组件加载数据的逻辑应该写在  onCustomRefresh事件中
在succ回调中,使用data.loadData(resultData)  就可以吧数据加载到data组件中

3.3版本的baas服务使用更加简便话了,使用baasData组件,建议使用3.3版本
qq:1912779713
WeX5教程--WeX5下载
回复 支持 反对

使用道具 举报

10

主题

39

帖子

153

积分

初级会员

Rank: 2

积分
153
QQ
 楼主| 发表于 2016-2-25 11:03:37 | 显示全部楼层
我在index.w文件里加了个data组件,命名为loginData,不能直接用这个变量吗? 使用this.comp也不行啊。。。

  1. var success = function(resultData) {
  2.                         debugger;
  3.                        
  4.                         //var loginData = this.comp("loginData");
  5.                         if (loginData.getCount() === 0) {
  6.                                 justep.Util.hint( "NOT FOUND USER" );
  7.                         }
  8.                         else
  9.                         {
  10.                                 loginData.loadData(resultData) ;
  11.                                 var row = loginData.getCurrentRow();
  12.                                 justep.Util.hint( "welcome back " + row.val("fName") );
  13.                         }
  14.                        
  15.                 };
复制代码
回复 支持 反对

使用道具 举报

发表于 2016-2-25 11:35:48 | 显示全部楼层
lightrain 发表于 2016-2-25 11:03
我在index.w文件里加了个data组件,命名为loginData,不能直接用这个变量吗? 使用this.comp也不行啊。。。 ...

那就只能在index.js中才可以使用this.comp("loginData")
就是那个.w中的组件,就只能在那个.w中使用this.comp()方法获取组件对象
qq:1912779713
WeX5教程--WeX5下载
回复 支持 反对

使用道具 举报

10

主题

39

帖子

153

积分

初级会员

Rank: 2

积分
153
QQ
 楼主| 发表于 2016-2-25 11:48:38 | 显示全部楼层
刚刚试了下,this.comp("loginData") 只能在 Model.prototype.button3Click中使用,一旦放到下一级succ中就不对了。 页面提示”this.comp is not a function“
回复 支持 反对

使用道具 举报

发表于 2016-2-25 11:54:17 | 显示全部楼层
lightrain 发表于 2016-2-25 11:48
刚刚试了下,this.comp("loginData") 只能在 Model.prototype.button3Click中使用,一旦放到下一级succ中就 ...

嗯,这个是因为执行环境变量,this表示的不是model对象了!
解决方法是,在外层定义一个变量,把this对象赋值给它:var me = this;
然后在success回调方法中使用me.comp方法即可
qq:1912779713
WeX5教程--WeX5下载
回复 支持 反对

使用道具 举报

10

主题

39

帖子

153

积分

初级会员

Rank: 2

积分
153
QQ
 楼主| 发表于 2016-2-25 11:59:15 | 显示全部楼层
嗯,搞定了,谢谢。
回复 支持 反对

使用道具 举报

10

主题

39

帖子

153

积分

初级会员

Rank: 2

积分
153
QQ
 楼主| 发表于 2016-2-25 13:54:06 | 显示全部楼层
不好意思,还有一个问题,为什么这里的row调试时得到的是”undefined“??

  1.                
  2.                 var me = this;
  3.                 // 请求成功后的回调方法
  4.                 var success = function(resultData) {
  5.                         me.comp("loginData").loadData(resultData);
  6.                         if (me.comp("loginData").getCount() === 0) {
  7.                                 justep.Util.hint( "NOT FOUND USER" );
  8.                         }
  9.                         else
  10.                         {                       
  11.                                 debugger;
  12.                                 var row = me.comp("loginData").getCurrentRow();
  13.                                 justep.Util.hint( "welcome back " + row.ref("fName").get() );
  14.                         }                       
  15.                 };
复制代码
回复 支持 反对

使用道具 举报

发表于 2016-2-25 13:56:16 | 显示全部楼层
lightrain 发表于 2016-2-25 13:54
不好意思,还有一个问题,为什么这里的row调试时得到的是”undefined“??

...

row.ref 应该改成   row.val
qq:1912779713
WeX5教程--WeX5下载
回复 支持 反对

使用道具 举报

10

主题

39

帖子

153

积分

初级会员

Rank: 2

积分
153
QQ
 楼主| 发表于 2016-2-25 14:22:48 | 显示全部楼层
row本身就是undefined,后面跟什么都一样;
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-18 04:45 , Processed in 0.085869 second(s), 23 queries .

Powered by Discuz! X3.4

© 2001-2013 Comsenz Inc.

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