我是jQuery / JSON的新手。我正在使用mistic100的querybuilder,但我不确定如何从数据源加载过滤器。在此示例中,将3个过滤器加载到构建器中。语法方面,我如何从数据源执行此操作?我想我只是不了解如何在数据源中迭代所有过滤器。
$('#builder-basic').queryBuilder({
plugins: ['bt-tooltip-errors'],
filters: [{
id: 'name',
label: 'Name',
type: 'string'
}, {
id: 'category',
label: 'Category',
type: 'integer',
input: 'select',
values: {
1: 'Books',
2: 'Movies',
3: 'Music',
4: 'Tools',
5: 'Goodies',
6: 'Clothes'
},
operators: ['equal', 'not_equal', 'in', 'not_in', 'is_null', 'is_not_null']
}, {
id: 'in_stock',
label: 'In stock',
type: 'integer',
input: 'radio',
values: {
1: 'Yes',
0: 'No'
},
operators: ['equal']
}
}],
rules: rules_basic
});
感谢您的帮助。
答案 0 :(得分:0)
在GUI中创建过滤器时,可以保存此过滤器;
var myFilter = $('#builder-basic').queryBuilder('getRules');
您可以将其存储回数据存储区,就像存储任何其他数据一样。你可能想要序列化它;
var myFilterString="";
if (!$.isEmptyObject(myFilter)) {myFilterString =JSON.stringify(genResult, null, 2);
然后,如果您需要显示此数据,可以将规则作为字符串拉出并反序列化,并使用setRules在GUI中显示规则。
$('#builder-basic').queryBuilder('setRules', JSON.parse(myFilterString));
如果您只是想设置一个不使用GUI创建的规则,您只需要创建一个所需结构的对象并使用setrules - 或者以字符串格式定义它,反序列化并使用setrules。
JSON看起来像这样
var rules_widgets = {
condition: 'OR',
rules: [{
id: 'date',
operator: 'equal',
value: '1991/11/17'
}, {
id: 'rate',
operator: 'equal',
value: 22
}, {
id: 'category',
operator: 'equal',
value: '38'
}, {
condition: 'AND',
rules: [{
id: 'coord',
operator: 'equal',
value: 'B.3'
}]
}]
};