在使用qooxdoo框架时,在一个类中: (在.xml文件中,activeRow被定义为object_iterate:)
<object_literal name="activeRow" scope="static" constructor="false" deprecated="false" private="false" protected="false" ignored="true" internal="false" type="Object">
<property name="nullable" scope="static" constructor="false" deprecated="false" private="false" protected="false" ignored="true" internal="false" type="Boolean">
</property>
<property name="check" scope="static" constructor="false" deprecated="false" private="false" protected="false" ignored="true" internal="false" type="String">
</property>
</object_literal>
这项工作:
properties: {
activeRow: {
nullable: true,
check: "Object"
},
...
this.setActiveRow(123);
var x = this.getActiveRow();
这不起作用:
properties: {
activeRow: {
nullable: true,
check: "Object",
init: {test1: null, test2: null}
},
...
this.setActiveRow({test1: 123, test2: 123 });
var y = this.getActiveRow().test1;
有谁知道语法的哪一部分是错的?
提前谢谢!
包含以下讨论的补充:
alert(typeof this.getActiveRow);返回:功能
警报(this.getActiveRow);
返回:
function(){
return qx.core.Property.executeOptimizedGetter(this, bI, name, "get");
}
答案 0 :(得分:1)
看看这个更完整的Playground example(您还可以在其中试验代码)。这是代码本身:
qx.Class.define("Foo", {
extend: qx.core.Object,
properties: {
activeRow: {
nullable : true,
check: "Object"
},
activeRowInit: {
nullable : true,
check: "Object",
init: {test1: null, test2: null}
}
},
members : {
setAndGet : function () {
this.setActiveRow({a:1,b:2});
/*this.setActiveRow(123);*/
var x = this.getActiveRow();
return x;
},
setAndGetMember : function () {
this.setActiveRowInit({test1: 123, test2: 123 });
var y = this.getActiveRowInit().test1;
return y;
}
}
});
var f = new Foo();
alert(f.setAndGet());
alert(f.setAndGetMember());
它捕获你的代码片段,带有一个属性,一个没有'init',并获取整个属性,或者只是属性对象的成员。对我来说,一切都按预期工作。如果在“setAndGet”方法中使用this.setActiveRow(123)
,则会收到一条合理的错误消息,上面写着“类型对象的预期值但得到123”(在日志窗格中)。
答案 1 :(得分:0)
如果第一个样本有效,则意味着setActiveRow
方法期望一个整数作为其参数,因此可能传递关联数组{test1: 123, test2: 123 }
会破坏它。
所以在第一个样本中有这样的代码:
this.setActiveRow(123);
然后第二行应该正常工作,假设test1
是类的属性。