Ana içeriğe geç

Form Betik Yazımı

Emakin formları özel davranışlar ve dinamik form etkileşimleri için betik yazımını destekler. Betikler, form görüntülenmeden önce işlemler gerçekleştirebilir veya veri modelindeki değişikliklere yanıt verebilir. $Xml gibi kitaplık işlevleri temel veri işlemlerini sağlar.

Form Alanları ve Veri İşleme

Form verilerine genel $Xmldeğişkeni üzerinden erişilebilir. Tüm form verisi öğelerine standart XPath ifadeleri kullanılarak başvurulabilir ve bu öğeler işlenebilir.

Belirli bir form alanının değerini almak için $Xml.Evaluate işlevi kullanılır:

1
var fieldValue = $Xml.Evaluate('MyField');

Tüm form verileri doğası gereği XML yapısında saklanır ve alan değerleri dize türünde temsil edilir. Değerleri farklı veri türlerinde kullanmak için tür dönüştürmeye yönelik aşağıdaki özel işlevlerden yararlanabilirsiniz:

Örneğin, bir tarih alanının değerini Date nesnesi olarak almak için:

1
var date = $Xml.EvaluateDateTime('MyDateField');

Form alanlarının değerlerini değiştirmek için Xml.SetValue işlevi kullanılır:

1
$Xml.SetValue('MyField', 'Hello World!');

SetValue işlevi, sağlanan değerin veri türünü uygun şekilde işler ve depolama için standart XML biçimine otomatik olarak dönüştürür.

1
2
$Xml.SetValue('MyDate', new Date());
var myDate = $Xml.Evaluate('MyDate'); // myDate will contain the date string in ISO 8601 format.

XML, hiyerarşik veri yapılarının saklanmasını desteklediğinden birden çok değerden oluşan listeler oluşturabilirsiniz. Bu, formlarda tablo veya ızgara düzenlerini desteklemek için özellikle kullanışlıdır.

1
2
3
// Appends a new 'MyRow' element under 'MyList' and sets its 'MyField' value.
var row = $Xml.AppendChild('MyList/MyRow');
row.SetValue('MyField', '1');

Daha fazla bilgi için Xml sayfasına bakın.

$Form Değişkene Genel Bakış

$Form değişkeni, form özelliklerine ve form öğelerini dinamik olarak yönetmeye yönelik işlevlere erişim sağlar.

1
2
3
4
5
6
7
8
$Form = {
    element : $('form'),       // jQuery form element
    refresh() {
        // method to re-build and render form from the scratch
    },
    readonly : boolean,        // Specifies whether the form is in readonly or in edit mode
    sections : {}              // List of form sections
}

Form Bölümü Durumlarını Dinamik Olarak Değiştirme

Form bölümü durumları genellikle görev özellikleriyle tanımlanır. Bölüm, bir içerik veya kapsayıcı bileşenindeki SectionName özniteliğiyle tanımlanan form alanıdır. Durumun form verilerinden veya betik mantığından belirlenmesi gerektiğinde betikler aynı bölüm durumu eşlemesini güncelleyebilir.

1
2
3
if ($Xml.EvaluateBoolean('SomeCondition')) {
    $Form.sections['MySection'] = 'Hidden';     // set MySection to Hidden state.
}

Bir betik, form oluşturulduktan sonra bölüm durumunu değiştirirse bileşenlerin yeni bölüm varsayılanlarını okuması için formu yenileyin veya yeniden oluşturun.

Kullanılabilir Bölüm Durumları:

Durum Açıklama
Default Normal form ve bileşen davranışını kullanır
Enabled Form salt okunur olmadıkça veya kurallar tarafından değiştirilmedikçe etkindir
Disabled Bölümü salt okunur olarak gösterir
Hidden Bölümü gizler

Değişiklik Olaylarını Bağlama

Veri modelindeki mevcut bir öğeye değişiklik olayı bağlamak için $Xml.Bind yöntemini kullanın.

1
2
3
$Xml.Bind('Person/Name', function () {
    // executed when Person/Name is changed
});

Form oluşturulurken henüz mevcut olmayabilecek öğeler için $Xml.Live yöntemini kullanın. Bu yöntem, oluşturulduklarında gelecekteki öğelere olay dinleyicileri bağlar.

1
2
3
$Xml.Live('List/Item/Amount', function () {
    // executed when List/Item/Amount is changed
});