j-Editable
Denna komponent kan redigera alla element med editable-klassen. det fungerar med data-bind eller dynamiska värden.
Konfigurera:
autofocus{Boolean} fokuserar på det första objektet (default:false)validate{Boolean} kan inaktivera validering (default:true)disabled{Boolean} kan inaktivera redigering (det lägger tillui-editable-disabledochui-editable-enabledklass), standard:falsechanged{String} valfritt, en länk till en metod eller väg --> det kommer att innehålla objektet med ändrade värden endastenter{String} valfritt, en länk till enmethod(path, value, el)-metod utförs om användaren trycker påENTERescape{String} valfritt, en länk till enmethod(path, value, el)-metod utförs om användaren trycker påESCcan{String} valfritt, en länk till metodenmethod(opt, el)måste returneraboolean, det vill sägacan edit?error{String} valfritt, en länk till metodenmethod(el, isInvalid, meta)utvärderas när objektet är ogiltigt och vice versa- NEW
class {String}valfritt, lägger till ett klassnamn i formuläretui-editable-CLASS(default:default)
data-editable attribut beskriver beteendet:
path{String} en relativ väg till egendom (kan arvas fråndata-bindautomatiskt)required{Boolean} valfritt, möjliggör "krav" (default:false)type{String} valfritt, kan varastring(default),date,number,boolean,emailellerhtmlNEWtagscan{String} valfritt, en väg tillfunction(opt, el)måste returneraboolean, det vill sägacan edit?save{String} valfritt, en väg tillfunction(opt, accepted(boolean)),acceptedfunktion måste utvärderasformat{String} valfritt, ett format fördate, standard:yyyy-MM-dddirsource{String} valfritt, väg till en datakälladircustom{String/Boolean} valfritt, kan innehålla en väg tillfunction(val, next(new_val))eller kan varaBoolean.dirrender{String} valfritt, en väg tillfunction(item, text)(du måste returnera HTML förj-Directory), kan denna funktion påverka listan över objekt ij-Directorydirminwidth{Numret} valfritt, minsta bredd förj-Directory, standard:200dirmaxwidth{Numret} valfritt, högsta bredd förj-Directorydirplaceholder{String} valfritt, en platsinnehavare förj-Directorydirempty{String} valfritt, lägger till ett tomt fält förj-Directorydirkey{String} valfritt, ett nyckelnamn för läsning avtextidirsource(default:name)dirvalue{String} valfritt, ett nyckelnamn för läsning avvalueidirsource(default:id)dirsearch{Boolean} valfritt, kan inaktivera sökning förj-Directoryautosource{String} en väg tillsearchfunktion iautocomplete,function(search, render(arr))autovalue{String} en egenskapsväg för värdet iautosourcemaxlength{Numret} en maxlängdminvalue{Numret} en min. värde för nummertyp (default:undefined)maxvalue{Numret} en max. värde för nummertyp (default:undefined)rebind{Boolean} omtrueåterkopplardata-bindendast på detta element (default:0)validate{String} alternativ, en villkor för validering av värde, kan innehålla en länk tillfunction(value)eller!!value.match(/[a-z]+/)multiline{Boolean} valfritt, möjliggör multiline + tillägg klasseditable-multiline(inline-block+width:100%) när det är redigering (default:false)raw{Boolean} valfritt, närtruedå den aktuella HTML-innehållet kommer att vara som en platsinnehavare om värdet ärnullable(default:true)accept{String} valfritt, ett villkor för att acceptera värde, kan innehålla en länk tillfunction(value)eller!!value.match(/[a-z]+/)liknarvalidateempty{String} valfritt, möjliggör tomt värde och kan innehålla tomt etikett eller1ellertrueför autorebindav binderinvalid{String} valfritt, en länk till metodenmethod(el, isInvalid, meta)utvärderas när objektet är ogiltigt och vice versa
Metoder:
- NEW:
component.changed()returnerar ett objekt med ändrade data
Bra att veta:
- Om användaren trycker på några
keyså kommer den redigerbara elementet att innehållakeypressedklass så länge de inte har lämnat kontrollen - Varje ändrad element kommer att innehålla klass
changed - Om komponenten ändrar vissa värden kommer huvudelementet att innehålla klass
ui-editable-changed - om elementet har
data-bindmedempty, kommer det att rengöras efter fokus - NEW stöder nu
tags-typ. För närvarande stöds endast medrebindochdata-bind. (databindandetemplatemed{jQuery selector}fungerar från+v18) - NEW om elementet ( eller förälder, eller föräldrar) innehåller attribut
data-disabled="1", kommer kontrollen att inaktiveras - NEW dolda och inaktiverade element kommer inte att valideras
Använd den med <ui-component name="editable">När komponenten ännu inte är laddad, jComponent Ladda ner den första gången från adressen i DEF.fallback (en av Componentator Författare: Peter Širka. källa: The Componentator Komponenterna i lager, MIT licens.
<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>