0

我编写了一个简单的应用程序,它在主页中显示一个 dataview.List 文章。

这是我主页的视图:

在此处输入图像描述

我还可以通过单击打开特定文章并在另一个视图中查看其完整描述。

这是我针对特定文章的文章查看页面:

在此处输入图像描述

为此,我在我的 ArticleController 类中应用了一个过滤器(在这里我得到了匹配的记录)。

onViewArticle: function(record) {
        var articleStore = Ext.getStore("ArticleStore");
        var selectedArticle = record;
        articleStore.filterBy(function(record, id) {
            if (selectedArticle.data.id == id)
                return (true);
            return (false);
        });
        Ext.Viewport.animateActiveItem(this.getArticleViewConnexContainer(), {
            type: "slide", direction: "left"
        });
    }, 

这是我的商店课程:

Ext.define("MyApp.store.ArticleStore", {
    extend: "Ext.data.Store",
    requires: ["MyApp.model.ArticleModel"],
    config: {
    model: "MyApp.model.ArticleModel",
    proxy: {
        type: "ajax",
        api: {
            create: "http://localhost/MobileApplication/MyApp/services/ArticleService.php?action=create",
            read: "http://localhost/MobileApplication/MyApp/services/ArticleService.php?action=read",
            update: "http://localhost/MobileApplication/MyApp/services/ArticleService.php?action=update",
            destroy: "http://localhost/MobileApplication/MyApp/services/ArticleService.php?action=destroy"
        },
         extraParams: {
            keyword: ""
        },
        reader: {
            type: "json",
            rootProperty: "articles",
            totalProperty: "total"
        }
    },
        autoLoad: true
    }
});

但是现在,我想在同一操作中应用另一个过滤器,以在文章描述下方列出其他文章(使用另一个特定过滤器)。这涉及使用我认为的两种不同的过滤器(一个用于取回特定文章(已在此处完成),另一个用于我想要的文章列表,就在文章描述下方)。但我该怎么做呢?如果我在同一个控制器函数中应用两个过滤器,第二个将破坏阻止一个,因为所有存储数据都在缓存中。有没有一种可能的方法(例如在 php MVC 框架中)将变量从控制器发送到视图并显示其内容(通过这种方式,我将有两个不同的变量,我将可以显示我的两个请求的内容我的观点)?或者也许是同时处理几家商店的可能方式?我真的迷路了。有人可以帮助我吗?在此先感谢您的帮助。

4

1 回答 1

0

里面实际上有几个问题。

Sencha Framework 在构建时考虑了“一个商店 - 一个视图”的概念。因此,如果您有两个不同的视图来展示来自一个数据存储的信息,您仍然需要拥有该存储的两个副本。如果您不需要同时显示这两个视图(在电话应用程序中通常是这样),您可以清除/应用反向过滤器,但我建议您拥有两个单独的副本。

就您的情况而言-我认为您不需要。当您显示特定书籍时,您不需要过滤商店。您只需加载一条记录 ( store.getAt()),然后在您的子表单中使用此记录。

于 2013-06-04T14:29:17.957 回答