FilteredListMixin(过滤孩子)

时间:2018-05-16 09:22:00

标签: memory filter dojo store

下面的代码在我搜索header属性(例如Fruits,Electronics)时起作用,但它不适用于children属性。

来自dojo网站(http://dojotoolkit.org/reference-guide/1.10/dojox/mobile/FilteredListMixin.html),它说了以下内容。

"过滤适用于由商店(dojo / store或dojo / data)支持的列表,以及不由商店支持的列表。过滤由包含分层数据(作为父数据项的子项的数据项)的商店支持的列表时,商店必须支持递归搜索查询,以便过滤可以匹配子项。"

"商店的网站含义必须支持递归搜索查询" ,dojo / store / Memory支持"递归搜索查询"

我在这里错过了一些过滤工作的孩子吗?

非常感谢任何帮助。

require([
  "dojo/ready",
  "dojo/_base/declare", 
  "dojox/mobile/EdgeToEdgeStoreList",
  "dojox/mobile/FilteredListMixin",
  "dojo/store/Memory",
  "dojox/mobile/parser",
  "dojox/mobile",
  "dojox/mobile/compat"
], function (ready, declare, EdgeToEdgeStoreList, FilteredListMixin, Memory)
{
  ready(function ()
  {     
    var alldata = [
      {field:"Fruits", label:"Fruits", header: true, children:[{field:"Apple", label:"Apple"}, {field:"Orange", label:"Orange"}]},
      {field:"Electronics", label:"Electronics", header: true, children:[{field:"Hair Dryer", label:"Hair Dryer"}, {field:"Oven", label:"Oven"}]}
    ];

    var param = {};
    param.labelProperty = "label";
    param.idProperty = "field";
    param.constraint = false;
    param.query = {};
    param.stateful = true;
    param.store = new Memory({idProperty:"field", data: alldata});
    param.placeHolder = "Search";
    var ph = new declare([EdgeToEdgeStoreList, FilteredListMixin])(param);
    ph.placeAt("somediv");
    ph.startup();
  });
}

0 个答案:

没有答案