2012-09-02 100 views
0

我想單擊網格中的單元格時從視圖中調用控制器中的方法。Extjs4,如何從視圖調用控制器操作方法?

{ header: "<img src='/Content/images/icons/page_white_acrobat.png'/>", width: 30, dataIndex: 'documents', sortable: true, renderer: this.hasDocument, 
    listeners: { 
     click: function() { 
     //how to call method in controller? 
     } 
    } 
}, 

有人知道,請指教我。

謝謝!

+0

這是從你的MVC點非常不好的做法。組件不應該意識到它們與控制器一起使用,如果您正在編寫適當的可重用代碼,它們可能不會如此。你應該真的讓控制器處理組件事件,這實際上是控制器的目的。另見[這個相關的問題](http://stackoverflow.com/questions/12234747)。 – Izhaki

回答

2

Sencha官方論壇上有很多tutorials for extjs 4

當我提供一些有用的鏈接,以良好的開始教程...... 與特定one's約網格化管理...我認爲人們可以看看它真的否決了。看看它,看看你自己做一些更好的方法去做問題提問者想要做的事情。

提供直接的答案並不總是最好的學習方式。

反正......下面將做的伎倆:

var controller = this.getController(Ext.String.capitalize(config.controller)); 
/* where config was an argument of your callback method) */ 

我建議你去耦儘可能查看從控制器和視圖從模型。如果你看看我已經鏈接的項目,你會發現在Viewport.js一個很好的方式來做到這一點。它在這些簡短腳本的末尾用.callParent(arguments)方法調用調用控制器。

+0

我已經這樣做了,因爲我真的認爲它是以Sencha ExtJS開始的。否則,他從來沒有這樣試過/問過這個問題。 – ThierryB

+0

你現在有一個直接的解決方案... – ThierryB

+0

好吧,現在你的答案看起來更像是一個正確的答案。只是有一件事,我找不到你在鏈接'one's'的答案中提供的代碼,你能不能分享到提供的線路的路徑,所以當點擊鏈接時,OP可以輕鬆找到它? – Izhaki

1

我確定原來的人已經遇到了答案或做了一些伎倆。

但可能這裏有同樣的問題的人是怎麼做一個簡單的例子:

不要把監聽到您的應用程序(MVC) - 視圖。給元件的ID(在這種情況下,網格)

在(MVC) - CONTROLLER添加此功能:

init : function(app) { 
    this.control({ 
     'myWindow': { 
      afterrender : this.doAfterRender 
      /*SAMPLE*/ 
     }, 
     'myWindow #someGrid_ID' : { 
      select: this.doSelect 
      /* THIS FUNCTION IS LOCATED in the Controller*/ 
     } 
    }); 
}, 
doSelect : function() { 
    /*....*/ 
} 

現在控制器將監聽的事件並在其上發生反應。

我希望這可以幫助一些可能會遇到困難的人。

看看:

大教堂查詢 - 解釋:

  • 「mywindow的#someGrid_ID」 - 在DOM查詢音符#它是指元素的ID。
  • 「myWindow」 - 指我窗口的別名。
  • 「someGrid_ID」 - 指我的網格ID。

(網格是「mywindow的」的子元素)

希望這有助於

相關問題