2012-04-18 137 views
4

當從列表中選擇一個項目時,我執行以下代碼行。第二次添加視圖時按鈕點擊不起作用

this.details = Ext.create('EventManager.view.EventInfoView'); 
this.getNavigationView().push(this.details); 

所以我創建一個新的視圖,並將其推到導航視圖上。 在我的控制器中,我在監聽新創建視圖內的acceptEventButton。

Ext.define('EventManager.controller.eventController', { 
extend: 'Ext.app.Controller', 
config: { 
    refs: { 
     acceptEventButton: '#acceptEventButton' 
    }, 

    control: { 
     "acceptEventButton": { 
      tap: 'onAcceptButtonTap' 
     } 
    } 
}, 
... 

第一次將此視圖置於導航視圖上時,按鈕點擊工作。 當我按下後退按鈕並推入另一個視圖時,按鈕什麼也不做。

我想通過按照現在的邏輯來解決這個問題。我寧願不在我創建視圖的時候自己添加事件監聽器,然後推送它。

任何想法存在這個問題,以及如何解決?

+0

同樣在這裏。我對這個問題感到非常沮喪,'add()'方法也是一樣的。我認爲這是一個錯誤。 – 2012-04-18 14:26:29

回答

5

發佈了一個新版本的sencha架構師,允許添加未列出的屬性。

我解決了這個問題,在我的按鈕上添加一個操作字段,並在我的控制器中對該操作做出反應。

{ 
    xtype: 'button', 
    id: 'acceptEventButton', 
    ui: 'confirm', 
    text: 'Accept', 
    action: 'acceptEvent' 
} 

,並在我的控制,我有下面的代碼行

control: { 
     "button[action=acceptEvent]": { 
      tap: 'onAcceptButtonTap' 
     } 
    } 
+0

您確定在組件被移除並再次添加時這會起作用嗎?你有沒有測試過它? – 2012-04-19 15:49:56

+0

我得到了這個爲我工作。 – 2012-04-24 11:35:01

+0

謝謝!這真的幫助我了! – iluvpinkerton 2014-10-03 19:28:32

2

我面臨同樣的問題更早,它被設置
autoDestroy解決:在我navigationView

的配置錯誤,

將false應用於此autoDestroy屬性後工作良好。
希望它也能爲你工作。

+0

感謝回覆, ,但不會給我的按鈕有一個ID問題? 而你的建議,我的觀點不會被破壞,只是另一個版本將被創建,並添加。這會減慢我假定的應用程序。 – 2012-06-20 12:53:17

+0

好的。歡迎。但我認爲在navigationView視圖中是通過stak處理的,並且通過設置autoDestry:false,它會從堆棧頂部刪除當前視圖對象。希望你能明白我的意思。 :) – bhavin 2012-09-19 07:31:19

0

你應該改變你的查詢,如下所示:

control: { 
    "button[id='acceptEventButton']": { 
     tap: 'onAcceptButtonTap' 
    } 
} 

作爲一個額外的信息:您還可以在這些查詢使用的xtype。
例如,如果你有一個navigationview如下:

Ext.define('app.view.Pages', { 
    extend: 'Ext.NavigationView', 
    xtype: 'pages', 
    ... 
} 

和你推一個列表,它是這樣的:

Ext.define('app.view.ItemList', { 
    extend: 'Ext.dataview.List', 
    xtype: 'itemlist', 
    ... 
} 

,那麼你可以寫你的查詢,如下所示:

control: { 
    "pages itemlist": { 
     itemtap: 'onItemTap' 
    } 
} 
相關問題