2011-07-19 44 views
5

我有一個Sencha標籤面板,每個標籤通過ajax加載html內容。其中一個組件是訪問者可以用來深入查看整篇文章的帖子/列表。你能觸發HTML元素在Sencha Touch中的動作/事件嗎?

我的問題是,我可以以某種方式觸發通過HTML的視圖切換?或者我應該通過JSON加載發佈數據,並在Sencha中設計一個列表面板?

謝謝!

回答

5

您可以將偵聽器添加到HTML中的元素,然後觸發視圖切換。例如,

// simple HTML snippet contained in Panel 
<a class="my-link">Click Me!</a> 

// on after load/after render (need to ensure that the elements exists in the page!) 

// get reference to the containing panel (tab) 
var panel = this.items.get(0); 

panel.getEl().on({ 
    tap: function(e){ 
     console.log('i was clicked!'); 
    }, 
    delegate: 'a.my-link' 
}); 

委託選項允許你傳遞一個選擇,這意味着當選擇相匹配的元素是活動對象的連鎖事件纔會觸發(即在e.getTarget(委託返回的東西)呼叫)。

編輯 您可以使用拍了拍DOM節點訪問抽頭元素的屬性,或使用Ext.fly環繞它的Ext.Element的實例,並使用了輔助方法。

console.log(e.getTarget('a.my-link')); // logs DOM node 
console.log(Ext.fly(e.getTarget('a.my-link'))); // logs Ext.Element wrapping DOM node 

console.log(e.getTarget('a.my-link').href); // logs href via DOM node property 
console.log(Ext.fly(e.getTarget('a.my-link')).getAttribute('href')); // logs href via Ext.Element getAttribute() method 

根據嵌套你可以,如果你總是在元素上輕敲,那麼你可以將其刪除您的收聽從了getTarget()調用(即刪除選擇,但如果有孩子在你正在聽的元素中,那麼你將需要它;在第二種情況下,'target'將是事件冒泡的孩子,所以href等將會是錯誤的,如果這是有道理的話:) :)

+0

謝謝斯圖爾特,有沒有辦法讀取href或我可以告訴sencha加載某個頁面? –

+0

請參閱對原始答案的編輯。 :) – Stuart

+0

非常感謝這麼多的幫助 –

0

2.2.1解決辦法:

initialize: function() { 
    this.element.on({ 
     tap: <function>, 
     delegate: <query_expression> 
    }); 

    this.callParent(arguments); 
} 

<query_expression>也可以是任何適合Ext.query()的東西。

相關問題