0

我試圖用Sencha Touch 2編寫一個應用程序來幫助我記住所有這些詞彙。關於視圖和控制器在MVC範式,特別是Sencha Touch之間的關係,謝謝〜

我正在做一個列表顯示一些單詞的部分。我希望列表視圖能夠諮詢筆記本控制器,以便它可以知道每個單詞是否已經在筆記本中,並且這樣它就可以相應地爲每個單詞顯示「添加到筆記本」或「從筆記本中移除」按鈕。

我只是想知道是否讓視圖向控制器發起請求是一個好習慣。在Objective-C中工作時,似乎可以通過將控制器設置爲視圖的委託來完成此操作。那麼Sencha Touch有沒有相同的方法?

+0

In Touch/ExtJS,控制器應該只處理視圖上的事件。僅將它們用作助手以查看視圖...將事件處理程序移動到的地方。 –

+0

@NeilMcGuigan那麼,請你給我一些關於這個特定場景的建議嗎?我是否應該在商店中傳遞筆記本中的信息?非常感謝! –

+0

我覺得最好先嚐試一下視圖中的代碼,然後將它移到控制器(就在你剛開始時) –

回答

0

Sencha MVC只是一個指導原則,結構並不嚴格執行。例如,您可以通過將所有事件偵聽器放入視圖中來創建不帶控制器的應用程序。或者,您可以維護1個控制器文件來處理您的所有視圖。隨你便。

聽起來好像您正在嘗試檢查ListStore的內容是否具有已存在於Notebook商店中的值。我會做的是在ListStore中創建一個「假」列,以檢查其對Notebook商店的值。

Ext.create('Ext.data.ListStore', { 
    ... 
    fields: [ 
     ... (other fields) ... 
     { 
     name: 'isInNotebook', 
     convert: function(value, record) { 
      return this.verifyInNotebook(record.get('fieldToVerify')); 
     } 
     } 
    ], 
    verifyInNotebook: function(verifyValue) { 
     var notestore = Ext.getStore('NotebookStore'); 
     return notestore.FindExact(verifyValue); 
    } 
} 

那麼在你看來,你將決定取決於列「isInNotebook」,這是一個虛擬的生成列的值,以顯示其按鈕。

我希望這會有所幫助。

相關問題