如何访问widget父级的用户定义方法

时间:2013-09-24 13:52:20

标签: qooxdoo

我有一个扩展Window类(qx.ui.window.Window)的父窗口小部件,这个窗口现在有几个子窗口(我通过覆盖 childControlImpl 创建了子窗口。)

现在我想从其中一个子类访问Parent类中的方法。我不想创建一个对象来调用方法,而是想使用 getLayoutParent 方法来执行此操作。

但是当我可以从子类调用 getLayoutParent 方法时,我可以访问的是内置方法,但是我无法访问我创建的任何方法。

我怎样才能做到这一点?

代码示例:

qx.Class.define("project.WrkAttrWindow",{

extend : qx.ui.window.Window,

construct: function() {
    this.base(arguments);
    this.__table = this._createChildControl("table");
},
members: {

__table:null 

_createChildControlImpl : function(id)
{
  var control;
  switch(id)
  {
  case "table":
      control = new project.WrkAttrTable();
      this.add(control);
      break;
  }
 return control || this.base(arguments, id);
},

getPrjId:function() {
console.log(I want to call this function);
}
});

儿童小工具

qx.Class.define("project.WrkAttrTable",{

extend: qx.ui.table.Table,

statics: {
    colKeys:["id","name","description"]
},

construct: function() {

    this.base(arguments);
          //some code here
    },

    members:
    {
       //call parent method from here
       this.getLayoutParent().getPrjId(); // does not work
    }
    });

1 个答案:

答案 0 :(得分:0)

尽管有关Nabble的交叉帖,但这是answer的要点:

在_ createChildControlImpl 中,使用 this._add 代替this.add。