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

QQ登录

只需一步,快速开始

查看: 2291|回复: 6

[结贴] list动态过滤

[复制链接]

2

主题

8

帖子

24

积分

新手上路

Rank: 1

积分
24
QQ
发表于 2016-2-1 11:40:38 | 显示全部楼层 |阅读模式
现在想通过button的click来控制list的过滤,写代码如下:
  Model.prototype.button3Click = function(event){
          var list = this.comp("plist");
          list.set("filter", "Pcategory = '+'苹果'+'");
          list.refresh();
但点击button时候,list不产生过滤。请教下代码如何更改呢?
list下绑定的baasdata数据pcategory字段值为汉字“苹果”等文字。
发表于 2016-2-1 13:15:50 | 显示全部楼层
list不能这样通过set方法设置filter
你可以给list的filter属性 设置为绑定一个js方法,在js方法中返回符合条件的数据(return true)
关于filter的条件,你需要定义一个ko变量 只要修改这个ko变量的值,filter就会重新执行一次
关于list的filter属性设置,可以参考:http://wex5.com/cn/web-components-list/
关于ko对象的介绍,参考:http://doc.wex5.com/?p=2986
qq:1912779713
WeX5教程--WeX5下载
回复 支持 1 反对 0

使用道具 举报

2

主题

8

帖子

24

积分

新手上路

Rank: 1

积分
24
QQ
 楼主| 发表于 2016-2-1 19:41:00 | 显示全部楼层
按照第一个链接里的方法:
set
void set(name, val) 设置组件的非只读属性,参考:组件属性

例:

//代码设置filter后需要主动调用list.refresh()
var list = this.comp(“list1”);
list.set('filter','fAge<20');
list.refresh();
这个方法行不通吗?
回复 支持 1 反对 0

使用道具 举报

53

主题

179

帖子

304

积分

中级会员

Rank: 3Rank: 3

积分
304
QQ
发表于 2016-2-1 11:48:12 | 显示全部楼层
直接过滤list所绑定的data不也行吗?
                var userData = this.comp("userData");
                userData.setFilter("usernamefilter", "user_name = '" + this.getElementByXid("loginName").value + "'");
                userData.refreshData();
这样list的值就直接过滤了,你试试看啊 ,我也是刚刚开始学习x5.
回复 支持 1 反对 0

使用道具 举报

2

主题

8

帖子

24

积分

新手上路

Rank: 1

积分
24
QQ
 楼主| 发表于 2016-2-1 19:46:32 | 显示全部楼层
有没有相关代码示例参考下呢?thks
回复 支持 反对

使用道具 举报

发表于 2016-2-2 09:38:13 | 显示全部楼层
wex5gz 发表于 2016-2-1 19:41
按照第一个链接里的方法:
set
void set(name, val) 设置组件的非只读属性,参考:组件属性

这个链接就有案例
http://wex5.com/cn/web-components-list/
在filter属性设置为:$model.age20($row)

在自己的js中这样写:
Model.prototype.age20 = function(row){
                return row.val('fAge')>20;
        };

如果想设置成动态的filter,可以定义一个ko对象,
比如:this.type= justep.Bind.observable('1');

这个时候,js改成这样
Model.prototype.age20 = function(row){
                if(this.type.get() == '1'){
                return row.val('fAge')>20;
                }               
                esle if(this.type.get() == '2'){
                return row.val('fName') =='张三';
                }
                。。。。
        };

这个时候,你只要在js中修改this.type的值,就可以控制filter绑定的js方法
比如
this.type.set('2')
这个时候过滤条件就变成
fName 等于   张三  了

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

使用道具 举报

2

主题

8

帖子

24

积分

新手上路

Rank: 1

积分
24
QQ
 楼主| 发表于 2016-2-2 11:01:09 | 显示全部楼层
谢谢
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-6-5 15:43 , Processed in 0.106766 second(s), 25 queries .

Powered by Discuz! X3.4

© 2001-2013 Comsenz Inc.

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