【问题标题】:Sencha Touch 2: How to FIlter on a Association's Store?Sencha Touch 2:如何过滤协会商店?
【发布时间】:2013-04-16 23:13:00
【问题描述】:

我在尝试过滤关联结果时遇到问题。我有一个包含许多子类别的类别列表。我正在使用 MVC 架构。所以,这是我正在尝试做的一个例子:

var subcategories = category.subcategories();

subcategories.filter("title", "some text");
subcategories.each( function (item) { console.log(item.get('title')); } );

某些过滤器未应用的方式。它总是返回原始存储,相同数量的记录等。

我也在这样做:

var subcategories = category.subcategories();

subcategories.filterBy(function(item) {
   console.log( item );
   return (item.get('title') == 'some text');
});

但是console.log它甚至没有运行一次!商店里满是唱片,我已经查到了

有什么想法吗?难道我做错了什么? 谢谢

【问题讨论】:

    标签: javascript model-view-controller extjs sencha-touch


    【解决方案1】:

    这可能是一个较晚的答案,但它会帮助许多正在寻找相同问题的解决方案的人。

    关键是在Association's Store拨打setRemoteFilter(false)

    var products = user.products();
    products.setRemoteFilter(false); // without this line, filter on Association's Store didn't work
    var categorieFilter = new Ext.util.Filter({
        property: 'categories',
        value   : 'Electronic'
    });
    products.setFilters(categorieFilter);
    

    【讨论】:

      【解决方案2】:

      几个问题:

      1. 您使用的是什么版本的 Sencha Touch?

      2. 在 Sencha Touch 中使用关联时,您仍然需要自己做很多工作。它不是完全自动的。例如,您需要手动将所有子类别添加到每个类别对象。你这样做吗?

      【讨论】:

      • ST2.2。我认为协会就是这样工作的。但我必须指定 remoteFilter 以便它自动向服务器端 API 发出请求。感谢您的回复。
      • 我不相信它会自动加载子目录并将它们分配给适当的类别。您需要手动加载子类别商店,然后将必要的添加到他们的类别中。