今天,我有一個關於正確/最好的方法是使用煎茶觸摸2通過它的建議MVC模型添加聽衆什麼小問題。Sencha Touch 2 - 在MVC中添加監聽器的正確方法?
至於我可以看到,有我一直在呈現方式主要有兩種聽衆在我的意見添加到各種組件。
1.在控制器。
我碰到這種方法來讀取該文件MVC爲ExtJS的4.0(觸摸沒有MVC文檔還)。它是這樣的:
init: function() {
console.log ('Launched the controller');
//listening test
//the Control function/method is unique to controllers and is used to add listeners to stuff
this.control({
'button': { 'tap' : function(){
console.log('the buttons speak!');
}
},
}
上述代碼將駐留在主控制器內,例如。在這裏,如您所見,我正在爲整個應用程序中的所有按鈕添加一個「tap」偵聽器。
據我瞭解,訪問這樣的特定組件,我需要有一個唯一的ID來標記他們每個人,然後用componentquery在這個位置放置listners到他們。
問題:我認爲這種方法非常酷......但是我遇到了在列表中使用它的問題......有時候我想要聽一些特定的列表項,比如「tapstart」和「bandnd」,但是因爲通常listItems動態創建爲列表中的子...我不知道如何給他們唯一的ID和/或使用查詢引擎找到他們(由於我缺乏經驗,我猜?我一直無法谷歌/在有意義的文檔中找到它的任何內容)。
2.在各個組件的初始化/配置
,我碰到聽衆加入到組件的另一種方法是定義監聽器,它的回調和事件它監聽直接在組件配置。
例子:
Ext.define('Paythread.view.CommentList', {
extend: 'Ext.Panel',
alias: 'widget.CommentList',
layout: 'vbox',
config : {
items: [
{
xtype: 'list',
layout: 'fit', //fullscreen: true,
height: 'viewport.height',
store: 'Comments',
onItemTap: function(){
//do stuff
},
pressedDelay: 20, //HOLY CRAP IMPORTANT FOR UX
itemTpl: '<h1>{user_id}</h1><h2>{comment}</h2>'
}
]
},
});
正如你可以從這個代碼中看到的,我創建了一個「onItemTap」監聽功能,這似乎工作相當不錯的好。但是......由於某種原因,我感到害怕,我不知道我所做的是否正確。
任何人都可以提供一些幫助,看我是否做得對,如果我應該以不同的方式做,或者我完全偏離軌道,甚至不應該首先定義像這樣的聽衆?
我真的很感激給予任何幫助!非常感謝大家。
克里斯,就是通過在聽衆將配置監聽到部件上的區別:對把它直接通過例如{}嗒嗒。 onItemTap:function(){blah}?另外......你會建議在組件上像這樣在組件上創建大部分監聽器,還是嘗試在控制器的控制方法中創建它們更好? 其實我嘗試添加一個監聽器通過。控制方法itemTap,但類似: this.control({ 名單「:{ 'itemTap':函數(){} 沒有工作。我需要在itemTap中使用不同的名稱嗎?* confused * – Mavorus 2011-12-16 02:04:33
感謝這個答案和下面的一個...我對聽衆有更好的理解,不完美..但更好。cmp.on也是如果你想在沒有使用MVC的情況下將監聽器放在組件上,這是一個很好的方法 – Mavorus 2011-12-19 00:48:38