我有一個Sencha標籤面板,每個標籤通過ajax加載html內容。其中一個組件是訪問者可以用來深入查看整篇文章的帖子/列表。你能觸發HTML元素在Sencha Touch中的動作/事件嗎?
我的問題是,我可以以某種方式觸發通過HTML的視圖切換?或者我應該通過JSON加載發佈數據,並在Sencha中設計一個列表面板?
謝謝!
我有一個Sencha標籤面板,每個標籤通過ajax加載html內容。其中一個組件是訪問者可以用來深入查看整篇文章的帖子/列表。你能觸發HTML元素在Sencha Touch中的動作/事件嗎?
我的問題是,我可以以某種方式觸發通過HTML的視圖切換?或者我應該通過JSON加載發佈數據,並在Sencha中設計一個列表面板?
謝謝!
您可以將偵聽器添加到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等將會是錯誤的,如果這是有道理的話:) :)
爲2.2.1解決辦法:
initialize: function() {
this.element.on({
tap: <function>,
delegate: <query_expression>
});
this.callParent(arguments);
}
<query_expression>
也可以是任何適合Ext.query()
的東西。
謝謝斯圖爾特,有沒有辦法讀取href或我可以告訴sencha加載某個頁面? –
請參閱對原始答案的編輯。 :) – Stuart
非常感謝這麼多的幫助 –