如何将属性验证器绑定到表单小部件验证器?

时间:2019-03-24 16:56:33

标签: qooxdoo

我制作了这个示例,以说明我要实现的目标http://tinyurl.com/y6y9xxt4。在文本框中键入内容,然后单击其外部的任何位置以激活绑定。

我有一个类demo.Communicator,该类具有名为url的属性。该属性已在第7行的validate: qx.util.Validate.url(),中进行了验证

qx.Class.define("demo.Communicator",{
  extend: qx.core.Object,

  properties: {
    url: {
      check: "String",
      validate: qx.util.Validate.url(),
      event: "changeUrl",
      init: null
    }
  },

  members:{}
});

在第24行中,我将changeValue的{​​{1}}事件与qx.ui.form.TextField对象的属性url绑定在一起。

demo.Communicator

如果textField.bind("changeValue", communicator, "url", { onUpdate: function() { textField.setValid(true); }, onSetFail: function(e) { textField.setValid(false); textField.setInvalidMessage(e.toString()); } }); 属性的验证器验证了来自TextBox的值,它将更新该属性,并且url回调将onUpdate设置为textField。如果验证器未通过验证,则该属性不会更新,并且valid回调会将onSetFail设置为无效。

是否有任何方法可以在不使用这些回调的情况下将验证状态从属性绑定到textField?如果该属性未通过验证,则textField必须自动设置为无效;如果该属性通过验证,则textField应该变回有效。

我知道我也可以将textField附加到qx.util.Validate.url()上。不幸的是,这会引入第二个事实来源,而且看起来不太好。

0 个答案:

没有答案