Doğrulayıcılar

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.
ziyaret edin.

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.
ziyaret edin.
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));
  }
};
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, '');
};

Değiştirici doğrulayıcıyla metin giriş alanı

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;
};

Boş değerli doğrulayıcı ile metin giriş alanı

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);
  }
};