Dojo searchAttr组合框数组

Dojo searchAttr组合框数组,dojo,Dojo,我想知道我的组合框中怎么会有多个搜索属性。我想要一些像: var cb = dijit.byId('myCombo'); cb.attr('store', store); cb.attr('searchAttr', ["name","age"]); 因此,我可以对两个标准进行自动完成。我假设您使用的是dojo.data.ItemFileReadStore。searchAttr仅适用于您在组合框中键入的属性 例如,如果您正在键入一个名称,但还希望按年龄进行筛选,则可

我想知道我的组合框中怎么会有多个搜索属性。我想要一些像:

     var cb = dijit.byId('myCombo');
     cb.attr('store', store);
     cb.attr('searchAttr', ["name","age"]);

因此,我可以对两个标准进行自动完成。

我假设您使用的是dojo.data.ItemFileReadStore。searchAttr仅适用于您在组合框中键入的属性

例如,如果您正在键入一个名称,但还希望按年龄进行筛选,则可以向查询参数添加一个字段:

// Get names with age=30
// Use set because attr is deprecated
cb.set( 'query', { 'age' : 30 });
如果要在最初加载页面时更具体地使用名称,可以在查询中指定该名称:

// All names starting with 'a' and age=30
cb.set( 'query', { 'name' : 'a*', 'age' : 30 });
如果您希望您的年龄是动态的,则必须从另一个地方(例如,dijit、表单元素、dom节点等)获取它。下面是一个示例,用于在页面加载时从另一个名为“anotherDijit”(例如数字文本框)的dijit获取年龄:

// Get names with age specified in 'anotherDijit'
cb.set( 'query', { 'age' : dijit.byId('anotherDijit').getValue() } );
但是,要在“anotherDijit”diijt更改时更改查询中的年龄值,必须执行以下两项操作之一:

  • 将观察者/事件处理程序附加到适当的“anotherDijit”事件(例如onChange),该事件将更新组合框存储查询中的新“anotherDijit”值。这是一种推式方法
  • 将观察者/事件处理程序附加到适当的组合框事件(例如onFocus),该事件将从“anotherDijit”dijit中提取当前值,然后更新存储查询参数

  • 请注意,您在“query”参数中输入的字段的查询方式类似于AND(name=this,age=that,等等)。如果您需要更复杂的查询,包括OR和not,您可以使用dojox.data.androadReadStore,例如。

    这不是假答案!谢谢你花时间。