пасоны версия 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, время: 03:42. |