2011-12-05 18 views
0

Sencha Touchでデータがどのように処理されるかは、私には不明な点がいくつかあります。Sencha Touch 2 MVC - ビューとコントローラ間でデータを渡したりキャッシュする方法

1 Reststoreからコントローラアクションでデータをロードしています。

Ext.ModelManager.getModel('MyApp.model.CheckIn').load(barcode, { 
     synchronous: true, 
     success: function(model) {    
      that.checkInConfirm({model:model}); 
     } 
    }); 

次に、ビューは、いくつかのフィールドの対応するセッターを呼び出すことによって更新されます。 this.getNickname().setValue(options.model.data.nickname); これ以降のビューは、this.getMain().setActiveItem(myView); でアクティブになります。これは、コントローラからビューにデータを渡す最も良い方法ですか?

2ビュー内でデータを操作した後、ボタンをタップすると、別のコントローラーアクションがトリガーされます。私はその後、1で読み込まれたデータを更新したいと思います。しかし、私が前にロードしたデータは失われています。サーバーから再度ロードする必要があるのですか、以前にロードされたデータを保持する別の方法がありますか?

答えて

0
  1. はい、いいですね。 コントローラは、基本的にデータを管理し、それをMVCの世界で意味をなさない視点(パネル)に設定します。すべてのビジネスロジック(データの取得/更新/設定)がコントローラに保持され、ビュー(パネル)に配置されていないことを確認してください。

  2. コントローラにoptions.modelを保存するだけです。 yourController.models.yourModelなどで保存します。 ボタンをタップすると、イベントをyourControllerにディスパッチする必要があります。 yourControllerはモデルの操作を開始し、更新されたモデルデータでビューを更新します。

+0

Thx!この問題を扱っている「煎茶の道」は存在しないように思えるので、それは道のりだと思います。私のコントローラのinitメソッドでは、私はあなたがデータを格納するために示唆したように使用するモデルと呼ばれる空のオブジェクトを作成します。 – karazy

+0

それは私もそれをやっている方法です!私は空の "モデル"を作成し、空の "ビュー"オブジェクトも作成します。 Sencha 2もこの機能を提供します: http://docs.sencha.com/touch/2-0/#!/api/Ext.app.Controller さらに、ネストされたコントローラ用の空の "コントローラ"オブジェクトを作成することもできます。 –

+0

また、独自のCustomControllerをExt.Controllerから派生させて、モデル、サブコントローラ、およびビューを型名で指定することもできます。 (拡張した)コンストラクターでは、指定されたすべてのモデル名を調べてインスタンス化し、それらの名前でアクセスできるように正しく割り当てることができます。このようにしてモデル、ビュー、およびサブコントローラをコントローラに簡単に取り付けることができます。コントローラの名前を指定するだけで簡単にアクセスできます。 –

関連する問題