【发布时间】:2016-10-07 11:44:45
【问题描述】:
是否有可能“覆盖”生成的属性设置器的相等性检查? 我喜欢有一个(整数)属性,可以区分 0(零)和 -0(负零)。
例如:
qx.Class.define("io.Dummy",
{
extend : qx.core.Object,
properties :
{
value : {
check : "Integer",
nullable : true,
init : null,
event : "changeValue"
}
}
});
因此以下代码将触发 3 个事件(而不是仅 1 个):
var dummy = new infodesk.Dummy();
dummy.addListener("changeValue", function (e) {
this.info("changed!");
}, this);
dummy.setValue(-0); // <= changed!
dummy.setValue(-0);
dummy.setValue(+0); // <= changed!
dummy.setValue(+0);
dummy.setValue(-0); // <= changed!
dummy.setValue(-0);
当我通过将“if (a===b)”之类的代码替换为“if(Object.is(a,b))”[1]来“修补”框架中的相等检查(qx.core.Property 的 __emitXxx 方法)时> 它有效,
...但如果有更好、更干净的方式来做这件事,那就太好了。
也许这是一个功能请求? 对于像“compare”(函数)或“altCheck”(布尔)这样的属性定义属性?
properties :
{
value : {
check : "Integer",
nullable : true,
init : null,
event : "changeValue",
altCheck : true // 'alternative check enabled'
// rsp.:
compare : function (a, b) { return Object.is(a, b); }
}
}
[1] ECMA 脚本 6
【问题讨论】:
-
这看起来像是一个功能请求 :) ...您可以将其报告给github.com/qooxdoo/qooxdoo/issues ...同时讨论解决它的策略,请加入我们gitter.im/qooxdoo/qooxdoo
标签: qooxdoo