2012-07-24 135 views
0

我有一個窗口,它包含一些文本框和一個按鈕。這是按鈕的定義; alias.widget: 'mywin', ....未檢測到按鈕點擊

  { 
       xtype: 'button', 
       height: 40, 
       width: 110, 
       text: 'send', 
       x: 58, 
       y: 12, 
       action: 'buttonclick' 
      }, 

在我的控制,我要檢測這個按鈕,點擊顯示的console.log語句。

這是代碼;

初始化:功能(應用){ this.control({

 'mywin button[action=buttonclick]': { 
      click: this.butClick 
     } 
    }); 
}, 


butClick: function(button,record) { 
    console.log('Button clicked'); 

這是沒有得到顯示,我怎麼能解決這個問題

UPDATE

Ext.define('MyApp.view.MyWindowClass', { 
    extend: 'Ext.window.Window', 
    alias: 'widget.mywin', 
    height: 340, 
    id: 'mywinid', 
    width: 728, 
    layout: { 
     type: 'absolute' 
    }, 

    initComponent: function() { 
     var me = this; 

     Ext.applyIf(me, { 
      items: [ 

       { 
        xtype: 'textareafield', 
        height: 140, 
        width: 340, 
        fieldLabel: 'Name', 
        x: 370, 
        y: 80 
       }, 
       { 
        xtype: 'button', 
        height: 40, 
        width: 210, 
        text: 'Save', 
        x: 480, 
        y: 240, 
        action: 'submitfeedback' 
       }, 
       { 
        xtype: 'datefield', 
        id: 'dd', 
        readOnly: true, 
        fieldLabel: 'Today', 
        x: 10     
       } 
      ], 
      listeners: { 
       show: { 
        fn: me.onWindowShow, 
        scope: me 
       } 
      } 
     }); 
     me.callParent(arguments); 
    } 
}); 

CONTROLLER

Ext.define('MyApp.controller.MyController', { 
    extend: 'Ext.app.Controller', 
    models: [ 
     'MyController' 
    ], 
    stores: [ 
     'MyController' 
    ], 
    views: [ 
     'MyWindowClass',   
    ], 
    init: function(application) { 
     this.control({ 
      'mywin button[action=submitfeedback]': { 
       click: this.butClick 
      } 
     }); 
    }, 
    butClick: function(button,record) { 
     console.log('button clicked'); 
     }); 
    } 
}); 
+0

該代碼看起來不錯,但你沒有其他的JS錯誤?當我嘗試創建該窗口時出現錯誤。 – nscrob 2012-07-24 15:08:56

+0

你的控制器加載正確嗎? – 2012-07-24 19:57:18

回答

3

兩種可能性:

  1. 這可能是一個錯字,但你寫alias.widget: 'mywin'。這應該是alias: 'widget.mywin'

  2. 控制器可能未加載。在init函數的開頭放置一個斷點以查看它是否運行。

除此之外,你的代碼看起來是正確的。如果您發佈了更多的上下文(例如,如何創建窗口,加載控制器,mywin的完整定義),我可以進一步檢查它。

編輯

你的資本是錯誤的選擇。 myWin應該是mywin

+0

我已將該代碼的帖子更新爲窗口類。我還添加了控制器類 – Illep 2012-07-24 14:32:17

+0

這是一個錯字。我已糾正它。忘記更新代碼。我仍然有這個問題:( – Illep 2012-07-24 14:54:56

+0

)您是否測試過以確保控制器已加載?嘗試在init中設置console.log或設置斷點。是否在App.js中的應用程序控制器屬性中列出了「MyController」? – 2012-07-24 15:17:03

0

除了添加[action=buttonclick]部件之外,您已經正確設置了監聽器。 這裏是這個docs

'mywin button': { // this line determines what view object you want to listen to 
    click: this.butClick // this line determines what event you want to listen to 
} 
+0

但是,我有我的代碼在'Controller'中。如果在那個窗口中有更多的按鈕會有什麼影響,那麼它將如何正確激活該功能? – Illep 2012-07-24 14:15:14

+0

選擇器的括號內的部分是完全合法的。它指定該按鈕具有一個名爲action的屬性,其值爲buttonclick。 – 2012-07-24 14:19:37

+0

爲什麼''click:this.butClick'射擊?這個按鈕在'Window'中,是否對此有任何影響? – Illep 2012-07-24 14:21:22