5

私はまだExtjsとmvcを学んでいるので、誰かが私に答えてくれると確信している設計上の質問があります。私の質問は:

2つの異なるビューを処理する2つのコントローラーがあります。2つのコントローラーのいずれかが呼び出され、ユーザーのタイプに基づいて正しいビューがレンダリングされます。したがって、私の場合、ユーザーが管理者である場合は、資格情報に基づいて管理者ビューを取得し、そのユーザーが標準ユーザーである場合は、標準ビューを取得します。決定ロジックをapp.jsに配置する必要がありますか、それとも呼び出すコントローラーを決定する別のコントローラーが必要ですか?

私が考えている1つの方法:

管理者用コントローラー

Ext.define('adminController', {

      // handles admin 
})

標準ユーザー用コントローラー

Ext.define('standardController', {

      // handles standard 
})

App.js

   Ext.application({
   name: 'MTK',
   autoCreateViewport: true,

     if(admin) {
       controllers: ['adminController']
     }
     else(std){
       controllers: ['standardController']
     }
});

別のアイデア:

管理者用コントローラー

Ext.define('adminController', {

    // handles admin 
})

標準ユーザー用コントローラー

Ext.define('standardController', {

    // handles standard
})

メインコントローラー

Ext.define('mainController', {

   if(admin){
      call adminController
   } 
   else(std){
      call standardController
   }
})
4

3 に答える 3

2

フロントエンドでこれを行うことはありません(または少なくともやりすぎます)。ユーザーがログインしているときに、ユーザーの役割を知ることができるはずです。

私はこのようにしていますが、より複雑な ACL を持っていると言わざるを得ません。バックエンドがアクセスを拒否するモジュールやビューでユーザーを悩ませることはありません。

私はこれら2つのアプローチを使用しています:

  • ログインに成功した後、アプリケーション ビュー (バックエンド!) にリロード/リダイレクトします。サーバーは、ユーザーセッションによって何を返すかを知っています
  • ログインが成功した後、構成を返します witch には次に必要な情報が含まれています (これは単なるコントローラーまたはその他のクラスである可能性があります)

どちらのアプローチでも、コードが少なくなり、読み込みが速くなり、デバッグが容易になります

これがあなたを正しい方向に向けてくれることを願っています。

于 2012-12-20T16:04:37.460 に答える
0

sraが正しく指摘したように、ログインしたユーザーのタイプに関する正しい情報をサーバーに送信させます。クライアント側では、1つのコントローラーでレンダリングするビューを決定します。これは、ログイン ページを処理する同じコントローラーである必要があります。CARD VIEW は、この目的で使用できるレイアウトです。ページがレンダリングされた後、他のコントローラーがそのビューで発生したイベントを処理します

また、コントローラーがビューの作業であるレンダリング部分を実行してはならない方法は、ビューで発生したイベントに反応するためだけにコントローラーを使用します

于 2012-12-20T20:30:40.893 に答える