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

QQ登录

只需一步,快速开始

12
返回列表 发新帖
楼主: 千里之外2

[分享] baas后端的传参与数据筛选

[复制链接]

90

主题

703

帖子

1026

积分

金牌会员

Rank: 6Rank: 6

积分
1026
QQ
 楼主| 发表于 2016-8-21 11:49:35 | 显示全部楼层
如何获取LIST控件的当前行ID并传入到下一个W页面

问题描述(question)

就比如仿淘宝案例中,在LIST页中点击某一件商品,会跳到商品详情页,如何展示不同的商品,直接的跳转展示的只是一个商品,如何展示不同的商品呢?

解决方案

原理
在List页打开商品详情页时,将当前行商品的唯一标识(如fID)传递给商品详情页;在商品详情页的参数接收事件中,根据List页传过来的唯一标识到后台请求数据,加载到data中。

代码实现
List页的点击事件代码类似:

1
2
3
var row = event.bindingContext.$object;   //获取当前行
var data= row.row.fID.value.latestValue;   //定义变量data,获取fID作为唯一标示传递给下个页面
justep.Shell.showPage(“xxx.w”,{fID:data});  //打开页面并传递参数data
商品详情页中,参数接收事件中的代码类似:

1
var fid = this.params.fID;   //TODO 根据fid请求后台过虑相应的数据后,加载到data中
回复 支持 反对

使用道具 举报

90

主题

703

帖子

1026

积分

金牌会员

Rank: 6Rank: 6

积分
1026
QQ
 楼主| 发表于 2016-8-21 16:19:59 | 显示全部楼层
setFilter的话最好写在model的模型创建时事件里,写在别的事件里的话数据都取完了你在去写过滤就没什么作用了
是的,在modelParamsReceive事件里过滤,一切ok了,谢谢大家!

回复 支持 反对

使用道具 举报

90

主题

703

帖子

1026

积分

金牌会员

Rank: 6Rank: 6

积分
1026
QQ
 楼主| 发表于 2016-8-21 16:29:54 | 显示全部楼层
setvar和setfilter区别
http://bbs.wex5.com/forum.php?mod=viewthread&tid=91982
(出处: 起步软件技术论坛)

参考:/UI2/demo/baas/complexData/index.w
data.filters.setVar  方法是给变量赋值
对应的是: /Baas/justep/demo.service.m  中的  queryUser 的sql语句中定义的变量,冒号开头

第二种,就是 直接给sql语句的where条件后面添加 字符串 拼接!

图片上传可以使用attachmentSimple 组件!或者app中cordova插件实现,参考
http://bbs.wex5.com/forum.php?mod=viewthread&tid=68669   http://bbs.wex5.com/forum.php?mo ... 8&pid=165225779

回复 支持 反对

使用道具 举报

90

主题

703

帖子

1026

积分

金牌会员

Rank: 6Rank: 6

积分
1026
QQ
 楼主| 发表于 2016-8-21 16:32:56 | 显示全部楼层
关于SQLQuery 自定义sql语句的查询,可以参考:http://docs.wex5.com/wex5-server-question-list-2006/
请问你的后台sql语句是配置文件中写的还是java代码中写的!

在前端获取过滤条件方法是data.getFilter('filter1')//根据名称获取

建议后台参考:/Baas/justep/demo.service.m 中queryUser 的定义
前台调用可以参考:UI2/demo/baas/complexData/index.w
回复 支持 反对

使用道具 举报

90

主题

703

帖子

1026

积分

金牌会员

Rank: 6Rank: 6

积分
1026
QQ
 楼主| 发表于 2016-8-21 16:35:24 | 显示全部楼层
data.setFilter('filter1',"name='zhangsan' and password='123456'")
data.refreshData();
if(data.count() >0 )//data中数据大于0
就表示查询获得了数据,baasData组件中就是存在用户的信息!

验证会员
http://bbs.wex5.com/forum.php?mod=viewthread&tid=94922
(出处: 起步软件技术论坛)
回复 支持 反对

使用道具 举报

90

主题

703

帖子

1026

积分

金牌会员

Rank: 6Rank: 6

积分
1026
QQ
 楼主| 发表于 2016-8-21 16:36:54 | 显示全部楼层
可不可以动态传参给BaasServer服务的filter?
http://bbs.wex5.com/forum.php?mod=viewthread&tid=93451
(出处: 起步软件技术论坛)

可以调用bassData组件上的api来实现, 例如
this.comp("xxBassData").filter.setFilter("xxFilterName", "某个字段的过虑条件")
回复 支持 反对

使用道具 举报

90

主题

703

帖子

1026

积分

金牌会员

Rank: 6Rank: 6

积分
1026
QQ
 楼主| 发表于 2016-8-21 16:49:35 | 显示全部楼层
执行完data.setFilter方法后就立马执行data.refreshData() 方法!
这个是baasData组件直接这样写就行了!
如果是data组件的话,后台逻辑需要自己来实现!(sql语句)
如果是访问加载数据时json文件!这个时候过滤条件就不起作用了!
回复 支持 反对

使用道具 举报

90

主题

703

帖子

1026

积分

金牌会员

Rank: 6Rank: 6

积分
1026
QQ
 楼主| 发表于 2016-8-21 16:53:20 | 显示全部楼层
你在api文档中没有搜到用法吗??
baasData是继承自data组件的!setFilter 就可以使用
比如:
var data = this.comp('mainData');
    data.setFilter('filter1',"SA_OPPerson.sName like '%李%'");
这个在什么时候调用能生效呢?
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-22 13:25 , Processed in 0.063328 second(s), 20 queries .

Powered by Discuz! X3.4

© 2001-2013 Comsenz Inc.

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