2012-07-24 105 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