【问题标题】:Qooxdoo Access Dynamic Properties from another class?Qooxdoo 从另一个类访问动态属性?
【发布时间】:2012-03-20 17:52:35
【问题描述】:

我正在尝试访问此类的 selectedObs 属性:

qx.Class.define("edd.view.ObsToggleContainer", {    
extend : qx.ui.container.Composite,
type: "singleton",
properties : {      
    selectedObs : { check: "Array"}
},
construct : function() {...

来自另一个这样的班级:

var ObsToggle = edd.view.ObsToggleContainer.getInstance();
console.log(ObsToggle.getSelectedObs());

但它似乎不知道当前设置的值是什么。我做错了什么还是有一些我不知道的逻辑?

感谢您提供的任何帮助!

【问题讨论】:

  • 如何以及何时设置属性值?
  • 好吧,我尝试了几种不同的方法(使用 init 语句、在类实例化和加载类之后),但它们似乎都不起作用。我终于找到了一种可行的方法,我将在下面发布答案。

标签: qooxdoo


【解决方案1】:

我最终只创建了一个单独的类作为 qx.core.Object 并使用它而不是单例 Composite 类,它似乎做了我想要完成的事情。

qx.Class.define("edd.data.DataStore", {
    properties : {      
        checkedObs: { 
            init: [false,  true, true, false, false, false, false, false, true, false, false, false], 
            check: "Array"
        }
    },
    extend : qx.core.Object,
    type: "singleton",

    construct : function() {
        var thisClass = this;
    },

    members :{
    }
});

所以现在,这段代码可以正常工作了:

var dataStore = edd.data.DataStore.getInstance();
var init_checked = dataStore.getCheckedObs();

【讨论】:

    【解决方案2】:

    嗯。这里还有别的东西。就属性而言,您的初始类定义和您自己的答案相距不远。也许在你最初的课程的其余部分,或者在使用它的代码中,有什么问题?!

    看看这个Playground sample,它使用了你的初始类定义。您必须打开“日志”窗格才能查看输出。像魅力一样工作。

    如果您可以更改此示例并对其进行调整直到重现您的问题,那将是非常有趣的吗?!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-10-17
      • 2010-12-04
      • 2013-05-06
      • 1970-01-01
      相关资源
      最近更新 更多