j-Editable
Αυτό το συστατικό μπορεί να επεξεργαστεί όλα τα στοιχεία με την κατηγορία editable. λειτουργεί με τις τιμές data-bind ή δυναμική.
ΕΠΙΤΡΟΦΗ:
autofocus{Boolean} επικεντρώνεται στο πρώτο στοιχείο (προεπιλεγμένο:false)validate{Boolean} μπορεί να απενεργοποιήσει την επικύρωση (προεπιλεγμένη:true)disabled{Boolean} μπορεί να απενεργοποιήσει την επεξεργασία (το προσθέτει τις τάξειςui-editable-disabledκαιui-editable-enabled), προεπιλογή:falsechanged{String} προαιρετική, μια σύνδεση με μια μέθοδο ή μονοπάτι --> θα περιέχει το αντικείμενο με αλλαγές μόνοenter{String} προαιρετική, μια σύνδεση με μια μέθοδοmethod(path, value, el), η μέθοδος εκτελείται εάν ο χρήστης πιέζειENTERescape{String} προαιρετική, μια σύνδεση με μια μέθοδοmethod(path, value, el), η μέθοδος εκτελείται εάν ο χρήστης πιέζειESCcan{String} προαιρετική, μια σύνδεση με τη μέθοδοmethod(opt, el)Πρέπει να επιστρέψουμεbooleanΑυτό σημαίνειcan edit?error{String} προαιρετική, ένας σύνδεσμος με τη μέθοδοmethod(el, isInvalid, meta)αξιολογείται όταν το στοιχείο είναι αναποτελεσματικό και αντίστροφα- NEW
class {String}προαιρετικά, προσθέτει ένα όνομα τάξης στη φόρμαui-editable-CLASS(προεπιλεγμένο:default)
Το χαρακτηριστικό data-editable περιγράφει τη συμπεριφορά:
path{String} ένα σχετικό μονοπάτι στην ιδιοκτησία (μπορεί να κληρονομηθεί από τοdata-bindαυτόματα)required{Boolean} προαιρετική, επιτρέπει "αναγκαία" (προεπιλεγμένη:false)type{String} επιλογή, μπορεί να είναιstring(επιλεγμένη),date,number,boolean,emailήhtmlNEWtagscanΔιάλογος, ένας δρόμος γιαfunction(opt, el)Πρέπει να επιστρέψουμεbooleanΑυτό σημαίνειcan edit?save{String} προαιρετική, ένα μονοπάτι προς τοfunction(opt, accepted(boolean)), η λειτουργίαacceptedπρέπει να αξιολογηθείformat{String} προαιρετική, μια μορφή γιαdate, προεπιλεγμένη:yyyy-MM-dddirsource{String} προαιρετική, ο δρόμος προς μια πηγή δεδομένωνdircustom{String/Boolean} προαιρετική, μπορεί να περιέχει μια διαδρομή προςfunction(val, next(new_val))ή μπορεί να είναιBoolean. Αυτή η επιλογή μπορεί να επιτρέπει την προσθήκη μιας προσαρμοσμένης αξίας (η αξία δεν ορίζεται στην πηγή δεδομένων)dirrender{String} προαιρετικό, ένα μονοπάτι προςfunction(item, text)(πρέπει να επιστρέψει το HTML γιαj-Directory), αυτή η λειτουργία μπορεί να επηρεάσει τη λίστα των στοιχείων στοj-Directorydirminwidth{Αριθμός} επιλογή, ελάχιστη πλάτος γιαj-Directory, προεπιλεγμένη:200dirmaxwidth{Αριθμός} προαιρετική, μέγιστη πλάτος γιαj-Directorydirplaceholder{String} προαιρετικά, ένας κάτοχος για τοj-Directorydirempty{String} προαιρετικά, προσθέτει ένα κενό πεδίο για τοj-Directorydirkey{String} προαιρετικό, ένα κλειδί για την ανάγνωση τουtextστοdirsource(προεπιλεγμένο:name)dirvalue{String} προαιρετικό, ένα κλειδί για την ανάγνωση τουvalueστοdirsource(προεπιλεγμένο:id)dirsearch{Boolean} προαιρετική, μπορεί να απενεργοποιηθεί η αναζήτηση γιαj-Directoryautosource{String} ένα μονοπάτι για τη λειτουργίαsearchσεautocomplete,function(search, render(arr))autovalue{String} ένα μονοπάτι ιδιοκτησίας για την αξία στοautosourcemaxlengthΜία μακράς διάρκειαςminvalue{Συνολικά} μια ελάχιστη τιμή για τον τύπο αριθμού (προεπιλογή:undefined)maxvalue{Συνολικά} μέγιστη τιμή για τον τύπο αριθμού (προεπιλογή:undefined)rebind{Boolean} εάν τοtrueανασυνδέει τοdata-bindμόνο σε αυτό το στοιχείο (προεπιλεγμένο:0)validate{String} προαιρετική, προϋπόθεση για την επικύρωση της αξίας, μπορεί να περιέχει σύνδεση μεfunction(value)ή!!value.match(/[a-z]+/)multiline{Boolean} προαιρετική, επιτρέπει multiline + προσθήκη τάξηeditable-multiline(inline-block+width:100%) όταν είναι επεξεργασία (προεπιλεγμένη:false)raw{Boolean} προαιρετική, ότανtrueτότε το τρέχον περιεχόμενο HTML θα είναι ως κάτοχος τοποθεσίας εάν η τιμή είναιnullable(προεπιλεγμένη:true)accept{String} προαιρετική, μια προϋπόθεση για την αποδοχή της αξίας, μπορεί να περιέχει σύνδεση μεfunction(value)ή!!value.match(/[a-z]+/)είναι παρόμοια μεvalidateempty{String} προαιρετική, επιτρέπει κενή τιμή και μπορεί να περιέχει κενό ετικέτα ή1ήtrueγια αυτο-rebindτου συνδέσμουinvalid{String} προαιρετική, ένας σύνδεσμος με τη μέθοδοmethod(el, isInvalid, meta)αξιολογείται όταν το στοιχείο είναι αναποτελεσματικό και αντίστροφα
Μέθοδοι:
- NEW: Το
component.changed()επιστρέφει ένα αντικείμενο με άλλα δεδομένα
Καλό να ξέρεις:
- Εάν ο χρήστης πιέσει κάποια
key, τότε το επεξεργαστικό στοιχείο θα περιέχει την τάξηkeypressedόσο δεν έχουν αφήσει τον έλεγχο. - Κάθε μεταβλητό στοιχείο θα περιέχει κλάση
changed - Εάν το στοιχείο αλλάξει ορισμένες τιμές, το κύριο στοιχείο θα περιέχει την κατηγορία
ui-editable-changed - Εάν το στοιχείο έχει
data-bindμεempty, θα καθαριστεί μετά την εστίαση - NEW υποστηρίζει τώρα τον τύπο
tags. για το παρόν υποστηρίζει μόνο μεrebindκαιdata-bind. (δεδο-συνδεδεμένοtemplateμε{jQuery selector}λειτουργεί από+v18) - NEW εάν το στοιχείο (ή γονέας, ή γονέος του γονέα) περιέχει χαρακτηριστικό
data-disabled="1", ο έλεγχος θα απενεργοποιηθεί - NEW κρυμμένα και απενεργοποιημένα στοιχεία δεν θα επικυρωθούν
Χρησιμοποιήστε το με <ui-component name="editable">Όταν το στοιχείο δεν έχει φορτωθεί ακόμα, jComponent Κατεβάστε το για πρώτη φορά από τη διεύθυνση DEF.fallback (Η Componentator Συγγραφέας: Peter Širka. πηγή: το Componentator Ετικέτες Αξιολόγηση, MIT άδεια.
<style>
.changed {}
.changed::after { float: right; content: '+'; margin-left: 5px; font-weight: normal; color: orange; }
</style>
<ui-component name="LAZY datepicker"></ui-component>
<ui-component name="LAZY directory"></ui-component>
<ui-component name="editable" path="form">
<div style="width:500px;padding:10px;border:1px solid #E0E0E0">
<div class="row">
<div class="col-xs-3">
Name:
</div>
<div class="col-xs-9">
<ui-bind path="form.name" config="html" class="editable block" data-editable="required:true"></ui-bind>
</div>
</div>
<div class="row">
<div class="col-xs-3">
Email:
</div>
<div class="col-xs-9">
<ui-bind path="form.email" config="html" class="editable block" data-editable="required:1;type:email"></ui-bind>
</div>
</div>
<div class="row">
<div class="col-xs-3">
Nickname:
</div>
<div class="col-xs-9">
<ui-bind path="form.nickname" config="empty:Nickname;html" class="editable block" data-editable="required:true"></ui-bind>
</div>
</div>
<div class="row">
<div class="col-xs-3">
Framework:
</div>
<div class="col-xs-9">
<ui-bind class="editable block" config="html;empty:Choose a framework;change:renderframework" path="form.frameworkid" data-editable="dirsource:frameworks;"></ui-bind>
</div>
</div>
<div class="row">
<div class="col-xs-3">
Country:
</div>
<div class="col-xs-9">
<ui-bind path="form.countries" config="template:{#countrytags}" class="editable block" data-editable="rebind:1;dirsource:countries;type:tags"></ui-bind>
</div>
</div>
<div class="row">
<div class="col-xs-3">
Date:
</div>
<div class="col-xs-9">
<ui-bind path="form.date" config="html:(new Date() || value).format('yyyy-MM-dd')" class="editable block" data-editable="type:date"></ui-bind>
</div>
</div>
</div>
<pre><ui-bind path="form" config="html:JSON.stringify(value, null, ' ')"></ui-bind></pre>
</ui-component>
<script type="text/html" id="countrytags">
{{ foreach m in value }}<span class="editable-tag"><i class="ti ti-times"></i>{{ m }}</span>{{ end }}
</script>
<script>
// Alternative to tags (ui-bind path="path" config="change:myfunc")
function myfunc(data, path, el) {
if (!data)
return el.html('');
var template = '<span class="tag"><i class="ti ti-times"></i>{0}</span>';
var html = '';
for (var i = 0; i < data.length; i++)
html += template.format(data[i]);
el.html(html);
}
var frameworks = [{ id: 0, name: 'Nothing', template: '<b>{{ name }}</b>' }, { id: 1, name: 'jComponent' }, { id: 2, name: 'Angular.js' }, { id: 3, name: 'React' }];
var countries = ['Slovakia', 'Poland', 'Hungary', 'Germany', 'USA', 'Austria', 'Poland', 'Czechia'];
var form = {};
form.date = new Date();
form.name = 'Peter Širka';
form.countries = ['Slovakia', 'Hungary'];
form.frameworkid = 0;
function renderframework(value, path, el) {
return value ? frameworks.findValue('id', value, 'name', DEF.empty) : DEF.empty;
}
</script>