如何从我的自定义小部件中获取值?

时间:2013-08-15 10:08:20

标签: dojo

以下代码是一个包含“确定”和“取消”按钮的确认对话框,我想检索用户选择“确定”或“取消”的值。

dojo.provide("custom.dialog.ConfirmDialog"); 
dojo.declare("custom.dialog.ConfirmDialog",dijit.Dialog , {
    message : "",
    postCreate: function(){ 
      var self = this; 
      this.inherited(arguments);

      this.contentCenter = new dijit.layout.ContentPane({ content : this.message, region: "center"});      
      this.contentBottom = new dijit.layout.ContentPane({region: "bottom"});


      this.okButton = new dijit.form.Button( { label: "OK" } ); 
      this.cancelButton = new dijit.form.Button( { label: "Cancel" } );      

      this.contentBottom.addChild(this.okButton);
      this.contentBottom.addChild(this.cancelButton);

      this.addChild(this.contentCenter);
      this.addChild(this.contentBottom);

      this.okButton.on('click', function(e){ 
        self.emit('dialogconfirmed', { bubbles: false } ); 
        self.destroy(); 
        return "OK";
      }); 
      this.cancelButton.on('click', function(e){ 
        self.emit('dialogdeclined', { bubbles: false } ); 
        self.destroy(); 
        return "Cancel";
      }); 
    } 
}); 

但是没有回复,如果你能指出我的错误,请帮助我,谢谢!

1 个答案:

答案 0 :(得分:2)

您是否尝试访问事件侦听器中的值?您可以将标签作为参数的一部分传递。

self.emit('dialogconfirmed', 
    { bubbles: false, label: self.okButton.get('label') } );

用法:

this.confirmDialog.on('dialogconfirmed', function(data) {
    var label = data.label;
});