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

しかし今、同じアクションで別のフィルターを適用して、記事の説明のすぐ下に (別の特定のフィルターを使用して) 他の記事をリストしたいと考えています。これには、私が考える2つの異なるフィルターを使用する必要があります(1つは特定の記事(すでにここで行われています)を取得するため、もう1つは記事の説明のすぐ下にある記事リスト用です)。しかし、どうすればこれを行うことができますか? 同じコントローラー関数に 2 つのフィルターを適用すると、すべてのストア データがキャッシュにあるため、2 番目のフィルターは防止フィルターを破棄します。コントローラーからビューに変数を送信し、その内容を表示する (たとえば、php MVC フレームワークのように) 可能な方法はありますか (この方法では、2 つの異なる変数があり、2 つの要求の内容を私の見解)?または、同時に複数の店舗を処理する方法はありますか? 私は本当に迷っています。誰でも私を助けることができますか?よろしくお願いします。

4

1 に答える 1

0

内部には実際にいくつかの質問があります。

Sencha Framework は、「1 つのストア - 1 つのビュー」というコンセプトを念頭に置いて構築されています。したがって、実際には 1 つのデータ ストアからの情報を表示する 2 つの異なるビューがある場合でも、このストアの 2 つのコピーが必要になります。これらの 2 つのビューを同時に表示する必要がない場合は、フィルターをクリア/適用することができます (電話アプリケーションの場合はほとんどそうです) が、2 つの別々のコピーを用意することをお勧めします。

あなたのシナリオに関する限り、それは必要ないと思います。特定の本を表示している場合、ストアをフィルタリングする必要はありません。1 つのレコード ( ) をロードするだけstore.getAt()で、このレコードを子フォームで使用できます。

于 2013-06-04T14:29:17.957 に答える