пасоны версия 0.3
![]() ^__^ |
Что бы вы хотели видеть в UI?
![]() |
Кинутым в портфолио и надпись RIP...;)
|
UI.js от Maxmaxmaximus
Короче суть нового UI 901:
Интерфейс состоит из виджетов. Каждый виджет состоит из одного или нескольких HTML элементов и модели. Виджеты создаются так: <div ui="name"></div>
ui['name'] = function(){
}
В функции мы описываем модель виджета, а в html элементе данные из этой модели доступны через {теги}. Например:
<div ui="name"> Числа {a} и {b} </div>
ui['name'] = function(){
this.a = 9;
this.b = 20;
}
За место {a} и {b} подставятся числа, изменяя числа в модели они автоматически перерисовываются в html. В модель можно класть как просто какие-то константные значения, так и формулы. Например:
<div ui="name"> {a} + {b} = {c} </div>
ui['name'] = function() {
this.a = 12;
this.b = 19;
this.c = '{a+b}';
};
Теперь в ячейке с в любой момент времени будет лежать сумма a+b. Изменив значение a или b мы МГНОВЕННО изменим значение и с. Формулы записываются как строки, только в фигурных скобках, чтобы отличаться от обычных строк. Вот '{так}' например. Например мы можем сделать формулу которая будет возвращать всегда актуальный массив:
ui['name'] = function() {
this.a = 12;
this.b = 19;
this.c = '{a+b}';
this.arr = '{ [a,b,c] }'; // [12, 19, 31]
// или так
this.arr = ['{a}', '{b}', '{c}']; // [12, 19, 31]
};
Это называется FRP, когда система в любой момент времени имеет явное и четкое состояние. К примеру, в ячейке formData у нас всегда содержится актуальный обьект с актуальными данными. И все зависимости видны не вооруженному глазу. Мы можем аяксить этот обьект на сервер совершенно не парясь о его актуальности, абстрагируясь от необходимости следить за его наполнением. Все зависимости просчитываются автоматически. ![]() |
Maxmaxmaximus,
для тебя почистил и переименовал. Будешь писать оскорбления, пойдешь в бан и я сам лично буду без промедления каждый твой аккаунт сразу же после создания туда отправлять, без объяснения причин! |
devote, забань ка того кто меня оскорбил в карму. Если не забанишь то грош цена твоим словам и принципам.
Сообщение от devote: Мои слова сказаны после оскорблений. А значит они распространяются на текущее и будущее время. Цитата:
|
а в чем сложность писать код таким образом?:
//************************************************************************************** Collection
/** @constructor */
function Collection(widgets, module) {
if (widgets instanceof Collection) return widgets;
if (!widgets) {
this.emptyCollection = true;
return
}
arrayItemsToObject(widgets, this);
this.template = this.eq(0).clone();
this.module = module;
}
Collection.prototype = {
constructor: Collection,
each: function(callback) {
},
add: function(widget) {
},
hasElement: function(element) {
},
eq: function(index) {
},
eqElement: function(index) {
},
indexOfElement: function(element) {
},
toggle: function(propName) {
},
turnOn: function(prop, filter) {
},
clickIndex: function(propName) {
},
splice: function(index, count, dataArray) {
},
insert: function(index, dataArray, toProp) {
},
prepend: function(toProp, dataArray) {
},
append: function(toProp, dataArray) {
},
filter: function(filter) {
},
empty: function() {
},
remove: function(index) {
},
repeat: function(dataArrayProp, toProp) {
},
watch: function(prop, callback) {
},
model: function(model, b) {
},
bind: function(prop) {
},
css: function(props, value) {
},
width: function(value) {
},
on: (function() {
}
};
и читать код проще, видя всю структуру класса, да и писать тоже куда проще создать новое свойство, чем каждый раз писать Collection.prototype.и_т_д=что_то |
Цитата:
|
я до сих пор не вдуплил зачем.
Это ты так скилл нарабатываешь? |
Цитата:
|
| Часовой пояс GMT +3, время: 18:26. |