Doğrulayıcı, alanları yeni değer alan ve daha sonra somut olarak ortaya koyar. Bunlar, bir alanı özelleştirmenin basit bir yoludur. Bir ekip üyesine göre bir alanın değeri değiştiğinde, girişi değiştirdiğinde veya hangi değerleri kabul edilebilir.
Sık karşılaşılan bazı örnekler:
- Metin alanını yalnızca harf kabul edecek şekilde kısıtlama.
- Bir metin alanının boş olmaması gerekir.
- İleri bir tarih olması gerekir.
- Açılır listeyi temel alarak bir bloğun şeklini değiştirme.
Doğrulayıcı türleri
Doğrulayıcılar, kullandıkları doğrulayıcının türüne bağlı olarak, farklı sürelerde yürütülür. hakkında bilgi edindiniz.
Sınıf doğrulayıcıları, alan türünün sınıf tanımının bir parçasıdır ve genellikle alan tarafından izin verilen değer türünü kısıtlamak için kullanılır (ör. sayı alanlarında yalnızca sayısal karakterler kabul edilir). Sınıf doğrulayıcıları tüm değerlerde çalıştırılıyor değerine geçirilen değer (oluşturucuya iletilen değer dahil).
Sınıf doğrulayıcıları hakkında daha fazla bilgi için Sınıf doğrulayıcı uygulama bölümünü inceleyin.
Yerel doğrulayıcılar, bir alanın oluşturulduğu anda tanımlanır. Yerel doğrulayıcılar, oluşturucu. Bu durum, reklamların:
- XML'de yer alan değerler.
- setValue'ya iletilen değerler.
- setFieldValue'ya iletilen değerler.
- Değerler kullanıcı tarafından değiştirildi.
Sınıf doğrulayıcıları, şu şekilde hareket ettiklerinden yerel doğrulayıcılardan önce çalıştırılır: sizi bekliyor. İletmeden önce değerin doğru türde olduğundan emin olurlar etkinleştirebilirsiniz.
Değer doğrulama sırası ve Değerler'e bakın.
Yerel doğrulayıcı kaydetme
Yerel doğrulayıcılar iki şekilde kaydedilebilir:
- Bir alanın oluşturucusuna doğrudan eklenir.
Blockly.Blocks['validator_example'] = {
init: function() {
// Remove all 'a' characters from the text input's value.
var validator = function(newValue) {
return newValue.replace(/\a/g, '');
};
this.appendDummyInput()
.appendField(new Blockly.FieldTextInput('default', validator));
}
};
- Entegre setValidator.
Blockly.Blocks['validator_example'] = {
init: function() {
// Remove all 'a' characters from the text input's value.
var validator = function(newValue) {
return newValue.replace(/\a/g, '');
};
var field = new Blockly.FieldTextInput('default');
field.setValidator(validator);
this.appendDummyInput().appendField(field);
}
};
Yukarıdaki yöntemlerin her ikisi de uzantı, destekler.
Alanın değeri, oluşturulan alanın türüne bağlı olarak çok farklı olabilir. doğrulandı (ör. sayı alanında bir sayı, metin giriş alanında ise sayı kaydedilir) bir dize depolayacağın ne yaparsa oyle ilgili talimatları alanını kullanın.
Döndürülen değerler
Doğrulayıcının döndürülen değeri, alanın sonraki ne yapacağını belirler. Orada üç olasılıktır:
Değiştirilen Döndürme Değeri
Daha sonra alanın yeni değeri haline gelen değiştirilmiş veya farklı bir değer. Bu, genellikle değerleri temizlemek için kullanılır. Örneğin, kullanabilirsiniz.
Değiştirme Doğrulayıcı örneği:
// Remove all 'a' characters from the text input's value.
var validator = function(newValue) {
return newValue.replace(/\a/g, '');
};
Null Döndürme Değeri
Null. Bu, belirtilen değerin geçersiz olduğu anlamına gelir. Çoğu durumda, bu alan
giriş değerini yoksayın. Tam davranış, alanın
doValueInvalid_
.
fonksiyon.
Nulling Doğrulayıcı örneği:
// Any value containing a 'b' character is invalid. Other values are valid.
var validator = function(newValue) {
if (newValue.indexOf('b') != -1) {
return null;
}
return newValue;
};
Tanımsız Döndürme Değeri
Tanımlanmamış (veya döndürme ifadesi yok) ya da giriş değeri, yani giriş değeri, alanın yeni değeri olmalıdır. Bu tür doğrulayıcılar genelde değişim dinleyicileri gibi hareket ederler.
İşleyici Doğrulayıcı örneği:
// Log the new value to console.
var validator = function(newValue) {
console.log(newValue);
};
Görünen metin değerinin, alanın değer belirtin.
Bunun değeri
Doğrulayıcının içi this
bloğu değil, alanı ifade eder. Gerekirse
bir doğrulayıcının içindeki bloka erişmek için getSourceBlock
işlevini kullanın. Şunları yapabilirsiniz:
şunu da kullanın:
bind işlevi
değeri gibi doğrulayıcının çağrıldığı bağlamı ayarlayın.
getSourceBlock
kullanan örnek kod:
Blockly.Blocks['colour_match'] = {
init: function() {
this.appendDummyInput()
.appendField(new Blockly.FieldColour(
null, this.validate
), 'COLOUR');
this.setColour(this.getFieldValue('COLOUR'));
},
validate: function(colourHex) {
this.getSourceBlock().setColour(colourHex);
}
};
Şunu kullanan örnek kod: bağ:
Blockly.Blocks['colour_match'] = {
init: function() {
this.appendDummyInput()
.appendField(new Blockly.FieldColour(
null, this.validate.bind(this)
), 'COLOUR');
this.validate(this.getFieldValue('COLOUR'));
},
validate: function(colourHex) {
this.setColour(colourHex);
}
};