2011-12-05 38 views
0

有很多事情我不清楚如何在Sencha Touch中最好地處理數據。Sencha Touch 2 MVC - 如何在視圖和控制器之間傳遞/緩存數據

1我正在從Rest Store的控制器操作中加載數據。

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將開始操作其模型並使用更新後的模型數據更新視圖。

+0

Thx!由於看起來沒有處理這個問題的「Sencha方式」,所以我想這就是(或者說一種)方式。在我的控制器init方法中,我創建了一個名爲模型的空對象,我按照您的建議用於存儲數據。 – karazy

+0

我就是這麼做的!我爲它創建了一個空的「模型」和一個空的「視圖」對象。 Sencha 2還將提供以下功能: http://docs.sencha.com/touch/2-0/#!/api/Ext.app.Controller 此外,您還可以爲嵌套控制器創建一個空的「控制器」對象。 –

+0

另外,你可以讓你自己的CustomController派生自Ext.Controller,它允許你通過它的typename指定模型,子控制器和視圖!在您的構造函數中(您已經擴展),然後可以遍歷指定的所有模型名稱並實例化它們並正確分配它們,以便可以通過該名稱訪問它們。通過這種方式,您可以輕鬆地將模型,視圖和子控制器附加到您的控制器,只需指定它們的名稱即可輕鬆訪問它們。 –

相關問題