Я сделал этот пример, чтобы показать, чего я пытаюсь достичь http: // tinyurl.com/y6y9xxt4.Введите что-нибудь в текстовое поле и затем щелкните в любом месте за пределами, чтобы активировать привязку.
У меня есть класс demo.Communicator
, у которого есть свойство с именем url
.Это свойство проверяется с помощью validate: qx.util.Validate.url(),
в строке 7
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
событие 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());
}
});
Если средство проверки свойства url
проверяет значение, поступающее из TextBox, оно обновляет свойство, а обратный вызов onUpdate
устанавливает textField
в valid
.Если валидатор не проверяет, то свойство не обновляется, и обратный вызов onSetFail
устанавливает textField
в недопустимое значение.
Есть ли способ привязать статус проверки из свойства в textField
без использования этих обратных вызовов?Если свойство не проверено, textField
должно быть автоматически установлено недействительным, а если оно подтверждено, textField
должно измениться на действительное.
Я знаю, что я мог бы присоединить qx.util.Validate.url()
кtextField
также.К сожалению, это привело бы ко второму источнику правды, и это не выглядит красиво.