2015-07-21 33 views
2

我是jQuery/JSON的新手。我使用mistic100的querybuilder,但我不確定如何從數據源加載過濾器。在這個例子中,3個過濾器被加載到構建器中。語法明智,我將如何從數據源做到這一點?我想我只是不理解如何遍歷所有的過濾器,如果他們在數據源中。如何遍歷數據源以創建Querybuilder過濾器

$('#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

在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)); 

如果你只是想設置wasnt使用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' 
    }] 
    }] 
};