Ana içeriğe geç

Form Komut Dizisi

Emakin formları, özel davranışlar ve dinamik form etkileşimleri için komut dizilerini destekler. Komut dizileri form işlenmeden önce işlemleri yürütebilir 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 değişken $Xmlüzerinden erişilebilir. Tüm form veri öğeleri standart XPath ifadeleri kullanılarak başvurulabilir ve 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ğal olarak bir XML yapısında depolanır ve alan değerleri dize türleri olarak gösterilir. Değerleri farklı veri türleriyle işlemek için tür dönüştürmeye yönelik aşağıdaki özel işlevleri kullanabilirsiniz:

Örneğin, bir tarih alanının değerini bir Date nesne 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!');

Bu SetValue işlev, sağlanan değerin veri türünü akıllıca işler ve depolama için uygun 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 depolanmasını desteklediğinden, birden çok değerden oluşan listeler oluşturabilirsiniz. Bu, formlardaki 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ış

Bu $Form değişken, 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ı normalde görev özellikleriyle tanımlanır. Bölüm, bir içerik veya kapsayıcı widget'ındaki SectionName özniteliğiyle tanımlanan bir form alanıdır. Durumun form verilerinden veya komut mantığından belirlenmesi gerektiğinde komut dizileri 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.
}

Komut dizisi, form oluşturulduktan sonra bir bölümün durumunu değiştirirse widget'ların yeni varsayılan bölüm durumlarını okuması için formu yenileyin veya yeniden oluşturun.

Kullanılabilir Bölüm Durumları:

Durum Açıklama
Default Normal form ve widget davranışını kullanır
Enabled Form salt okunur olmadıkça veya kurallar tarafından geçersiz kılınmadıkça etkin olur
Disabled Bölümü salt okunur olarak gösterir
Hidden Bölümü gizler

Değişiklik Olayları Ekleme

Veri modelindeki mevcut bir öğeye değişiklik olayı eklemek 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, gelecekte oluşturulacak öğelere olay dinleyicileri ekler.

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