j-Modificator
Този компонент може да променя поведението на елемента в съответствие с предварително дефинирана схема. компонентът може да бъде хвърлен върху елемент body (защото е сингъл) и е оптимизиран за изпълнението.
Подкрепени атрибути:
data-m="SOME.PATH"- компонентът ще следи този пътdata-m-schema="schema_name"- модификаторът използва тази регистрирана схемаdata-m-selector=".ui-textbox-label"(опционално) целевият елемент ще бъде елемент според селектора (предварително:null)- NEW UPDATE:
data-m="SOME.PATH + schema_name"този атрибут може да съдържаpathиschema_nameзаедно
Подкрепени класове:
modifyпозволяваclickсъбитие за този елементe.typeще съдържа типclick
Регистрация на схемата:
- Можете да определите няколко схеми
instance.register('schema_name', function(value, element, e) {
// value: according to the "data-m"
// element: jQuery element (target)
// e: contains additional data { type: 'init/click/bind' } and can be used as a repository
// here you can modify the element
});Цели:
j-Modificator поддържа jComponent скъпи, но всеки път в обхвата трябва да съдържа ? въпрос марка, например data-m="?.name", който се заменя с обхватния път. Important: jComponent обхватът трябва да включва някои компоненти.
<div data-scope="user">
<div data---="textbox__?.name">Your name</div>
<div data-m="?.name"></div>
</div>Използвайте го с <ui-component name="modificator">Когато компонентът все още не е зареден, jComponent Изтегляне на първия адрес в DEF.fallback (След това Componentator Източник: Питър Шерка Componentator Съставни съставки, лиценз на MIT.
<ui-component name="modificator">
<div><a href="javascript:void(0)" class="modify" data-m="obj.a" data-m-schema="link">Click 1</a> second: <a href="javascript:void(0)" class="modify" data-m="obj.a" data-m-schema="link">Click 2</a></div>
<br />
<div><button class="modify" data-m="obj.b" data-m-schema="button"><i></i><b>Submit</b></button></div>
</ui-component>
<script>
// v20 STYLE(), v19 CSS()
(W.STYLE?W.STYLE:W.CSS)('.sending{color:black;font-weight:bold;cursor:not-allowed}.done{color:green;font-weight:bold;}button .ti{margin-right:5px;}');
// Register modificator schemas
SETTER(true, 'modificator', 'register', 'link', function(value, element, e) {
switch (e.type) {
case 'init':
break;
case 'click':
element.aclass('sending').html('Sending...');
break;
default:
if (value != null)
element.rclass().aclass('done').html(value);
break;
}
});
SETTER(true, 'modificator', 'register', 'button', function(value, element, e) {
switch (e.type) {
case 'init':
e.icon = element.find('i');
e.html = element.html();
break;
case 'click':
e.icon.rclass().aclass('ti ti-spinner ti-refresh');
element.prop('disabled', true).find('b').html('Sending...');
break;
default:
e.icon.rclass();
element.prop('disabled', false);
element.find('b').html(e.html);
if (value != null)
e.icon.aclass('ti ' + (value ? 'ti-check-circle' : 'ti-times-circle'));
break;
}
});
var obj = {};
obj.a = null;
obj.b = null;
// Only for test
$(document).on('click', '.modify', function(e) {
var path = $(this).attr('data-m');
if (path === 'obj.a') {
SET(path, 'Success', 3000);
} else {
SET(path, true, 3000);
SET(path, null, 5000);
}
});
</script>