j-Editable
Deze component kan alle elementen bewerken met de editable-klasse. het werkt met data-bind of dynamische waarden.
Configuratie:
autofocus{Boolean} richt zich op het eerste item (default:false)validate{Boolean} kan de validatie ontgrendelen (default:true)disabled{Boolean} kan bewerken (dit voegt deui-editable-disabledenui-editable-enabledklassen toe), standaard:falsechanged{String} optioneel, een link naar een methode of pad --> het bevat het object met veranderde waarden alleenenter{String} optioneel, een link naar een methodemethod(path, value, el), de methoda wordt uitgevoerd als de gebruikerENTERdrukkenescape{String} optioneel, een link naar een methodemethod(path, value, el), de methoda wordt uitgevoerd als de gebruikerESCdrukkencan{String} optioneel, een link naar de methodemethod(opt, el)moetbooleanretourneren, dat betekent datcan edit?error{String} optioneel, een link naar de methodemethod(el, isInvalid, meta)wordt beoordeeld wanneer het item onvoldoende is en omgekeerd- NEW
class {String}optioneel, voegt een klasnaam toe in het formulierui-editable-CLASS(default:default)
data-editable Het attribuut beschrijft het gedrag:
path{String} een relatieve route naar eigendom (kan automatisch worden geërfd vandata-bind)required{Boolean} optioneel, mogelijk "verplicht" (default:false)type{String} optioneel, kanstring(default),date,number,boolean,emailofhtmlNEWtagszijncan{String} optioneel, een weg naarfunction(opt, el)moet teruggaanboolean, dat betekentcan edit?save{String} optioneel, een weg naarfunction(opt, accepted(boolean)), moet de functieacceptedworden beoordeeldformat{String} optioneel, een format voordate, standaard:yyyy-MM-dddirsource{String} optioneel, de weg naar een gegevensbrondircustom{String/Boolean} optioneel, kan een route naarfunction(val, next(new_val))bevatten of kanBoolean. Deze optie kan een aangepaste waarde toevoegen (waarde niet gedefinieerd in de gegevensbron)dirrender{String} optioneel, een route naarfunction(item, text)(must HTML retourneren voorj-Directory), deze functie kan de lijst van items inj-Directorybeïnvloedendirminwidth{Nummer} optioneel, een minimale breedte voorj-Directory, standaard:200dirmaxwidth{Nummer} optioneel, een maximale breedte voorj-Directorydirplaceholder{String} optioneel, een plaatshouder voorj-Directorydirempty{String} optioneel, voegt een leeg veld toe voorj-Directorydirkey{String} optioneel, een sleutelnaam voor het lezen vantextindirsource(default:name)dirvalue{String} optioneel, een sleutelnaam voor het lezen vanvalueindirsource(default:id)dirsearch{Boolean} optioneel, kan zoeken naarj-Directoryworden uitgeschakeldautosource{String} een weg naar desearchfunctie inautocomplete,function(search, render(arr))autovalue{String} een eigendomsweg voor de waarde inautosourcemaxlength{Nummer} een maxlengteminvalue{Nummer} een min. waarde voor nummer type (default:undefined)maxvalue{Nummer} een max. waarde voor nummer type (default:undefined)rebind{Boolean} alstruealleendata-bindaan dit element bindt (default:0)validate{String} optioneel, een voorwaarde voor validatie van waarde, kan een link bevatten naarfunction(value)of!!value.match(/[a-z]+/)multiline{Boolean} optioneel, maakt multiline + appends klasseeditable-multiline(inline-block+width:100%) wanneer het is bewerken (default:false)raw{Boolean} optioneel, wanneertruedan de huidige HTML-inhoud zal als een plaatshouder zijn als de waardenullableis (default:true)accept{String} optioneel, een voorwaarde voor de aanvaarding van waarde, kan een link bevatten naarfunction(value)of!!value.match(/[a-z]+/)is vergelijkbaar metvalidateempty{String} optioneel, maakt een lege waarde en kan leeg label of1oftruebevatten voor autorebindvan binderinvalid{String} optioneel, een link naar de methodemethod(el, isInvalid, meta)wordt beoordeeld wanneer het item onvoldoende is en omgekeerd
Methoden:
- NEW:
component.changed()geeft een object met gewijzigde gegevens terug
Goed om te weten:
- Als de gebruiker een aantal
keydrukt, zal het bewerkbare element dekeypressed-klasse bevatten zolang ze de controle niet hebben verlaten. - Elk gewijzigd element bevat de klasse
changed - Als de component een aantal waarden verandert, bevat het hoofdelement de klasse
ui-editable-changed. - Als het element
data-bindheeft metempty, wordt het na focus verwijderd. - NEW ondersteunt nu de
tags-type. voor nu alleen ondersteunt metrebindendata-bind. (data-bindtemplatemet{jQuery selector}werken van+v18) - NEW als het element (of ouder, of ouder van de ouder) een attribuut bevat
data-disabled="1"De controle wordt uitgeschakeld - NEW verborgen en ontbrekende elementen worden niet gevalideerd
Gebruik het met <ui-component name="editable">Wanneer de component nog niet is geladen, jComponent Download het op eerste gebruik van het adres in DEF.fallback (De Componentator Schrijver: Peter Širka. bron: de Componentator Componenten repository, MIT licentie.
<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>