Javascript.RU

Результаты опроса: Как вам UI
Похоже на унылое говно 20 68.97%
Однозначно буду использовать 7 24.14%
Пока не разобрался что это 2 6.90%
Голосовавшие: 29. Этот опрос закрыт

Создать новую тему Ответ
 
Опции темы Искать в теме
  #481 (permalink)  
Старый 03.02.2014, 14:04
Профессор
Отправить личное сообщение для tenshi Посмотреть профиль Найти все сообщения от tenshi
 
Регистрация: 20.03.2008
Сообщений: 1,183

Сообщение от Maxmaxmaximus7 Посмотреть сообщение
а фпизду, оставлю все 3 разделителя - . :

а сам буду использовать няшное двоеточие
Двоеточие используется для xmlns. Не стоит идти поперек стандартов.
__________________
.ня
Ответить с цитированием
  #482 (permalink)  
Старый 03.02.2014, 14:07
Профессор
Отправить личное сообщение для tenshi Посмотреть профиль Найти все сообщения от tenshi
 
Регистрация: 20.03.2008
Сообщений: 1,183

Сообщение от Maxmaxmaximus7 Посмотреть сообщение


кто еще не в курсе, ui приветствует распиздяйский но красивый стиль написания кода =)

1) не рекомендуется использовать точки с запятой, так как они не красивые
2) если не обьявлен var то переменная считается свойством контроллера, если обьявлен, то не считается
3) если идет приравнивание круглых скобочек, то считается что это формула, и вешается геттер, при обращении к которому значение формулы будет пересчитываться
4) сервисы доступны по умолчанию в любом месте кода контроллера, и их имена начинаются с бакса.
5) сервисы поддерживают ассинхронность, и если сервис поддерживает (а например встроенный сервис $http поддерживает) то после окончания запроса в поле в которое мы его присвоили (куда временно поместилась навидимая формула с промисом) поместится результат запроса.
Ну и изобретать свой язык тоже не стоит без острой необходимости, ибо дебажить потом это не ахти какое удовольствие.
__________________
.ня
Ответить с цитированием
  #483 (permalink)  
Старый 03.02.2014, 14:10
Профессор
Отправить личное сообщение для tenshi Посмотреть профиль Найти все сообщения от tenshi
 
Регистрация: 20.03.2008
Сообщений: 1,183

Сообщение от Maxmaxmaximus7 Посмотреть сообщение
И еще ребят, вот тут уж точно с вами посоветоваться нужно, как лучше передавать параметры в директивы? Смотрите, вот в ангуляре там каждая директива принимает СТРОКУ и парсит её, выпарсивая из неё значения. она может воспринято эту строку как выражение и выполнить его через eval (так например события делают), может просто там какое-то слово подчерпнуть, число, и.т.п. НО СМОТРИТЕ, как сделать ДИНАМИЧЕСКИ ИЗМЕНЯЕМЫЕ ПАРАМЕТРЫ??


Допустим есть у нас директива fx:fire которая рисует тень из огня, и принимает она на вход 2 параметра, ширина огня и высота огня) ок.

Я хочу придумать способ как записывать эти параметры. Окей, все как записать и прочитать решает коечно директива и её код) но все же, я хочу придумать пиздатый стиль передачи параметров директивам.

Например можно сделать так fx:fire="10px 5px" по аналогии с css, но что если мы хотим динамически менять их? Тогда можно сделать так:

fx:fire="{panel.width + 10}px {panel.height + 5}px"

ок ок, но не кажется ли вам это как то тупо? вначале мы высчитываем значения выражений, подставляем их как строки в фигурыне скобки, получаем одну большую строку значения атрибута fx:fire потом передаем эту строку директиве fire и она ПАРСИТ её выдерая значения, и только потом уже применяет их. по моему как-то тупо, не проще ли сразу передать туда выражение?

типа fx:fire="panel.width + 10".

но вопрос, КУДА И КАК ПИХАТЬ ВТОРОЕ ЗНАЧЕНИЕ??? я короче придумал вот как делать, все что в значени атрибута оборачивается в квадратные скобки, получается массив =) это будет типа массив аргументов к директиве =) по аналогии с параметрами функции.

тогда становится гораздо проще описывать директивы, ни надо ни какого парсинга и прочего. если мы хотим, мы, внутри кода директивы, можем использовать тупо строковое значение директивы, еслиже хотм можем использовать массив аргументов (если все распарсено корректно то массив будет не пустой). Ну как вам идея?

Получается что мы сможем передать параметры директиве fire просто тупо через запятую, так, как будто мы функцию вызвали, и когда они изменятся директива автоматически об этом узнает.

грубо говоря мой вопрос в следующем, что более читабильно это или это?

fx:fire="panel.width + 10, panel.height + 5"

fx:fire="{panel.width + 10}px {panel.height + 5}px"
Заниматься вычислениями - задача вью-модели. На нормальном языке программирования. Где есть циклы, функции, объекты, наследование и прочая фигня. Не к чему реализовывать то же самое, но в шаблоне.
__________________
.ня
Ответить с цитированием
  #484 (permalink)  
Старый 03.02.2014, 15:19
Профессор
Посмотреть профиль Найти все сообщения от Maxmaxmaximus7
 
Регистрация: 08.01.2014
Сообщений: 354

Сообщение от cyber
По сути функции контроллеры использует тольку ui, почему бы не переписывать эти функции в локальный объект, и затирать их с глобального window.
ну не знаю, вообще не принято будет пихать ихтак, правильнее создать свой модуль и в него засовывать их, типа

var app = ui.module('app');   // создаем модуль наследуем его от ui

app.controller('Main', function(){});
app.controller('Panel', function(){});

app.filter('fdf',function(){});

app.directive('fdf',function(){});
app.directive('fdf',function(){});

app.animation('fade',function(){});


ну вот в таком стиле)


Сообщение от cyber
О чем ты?
есть области видимости, а есть КОНТРОЛЛЕРЫ по уму контроллеры надо создавать в какую то ячейку области видимости:

типа

$scope.myPanel = new Panel();

и только через myPanel обращаться.

но ты дал мне понять что это тупо (а я и сам так считал просто с ангуляра слизал) и что можно делать контроллеры так

Panel.call($scope);

тогда не придется каждый раз писать myPanel чтобы обратится к свойствам контроллера.

ок, но как тогда быть если у нас панель в панели и мы хотим обратится к внешенй панели ?

Последний раз редактировалось Maxmaxmaximus7, 03.02.2014 в 15:25.
Ответить с цитированием
  #485 (permalink)  
Старый 03.02.2014, 15:26
Аватар для cyber
I am Student
Отправить личное сообщение для cyber Посмотреть профиль Найти все сообщения от cyber
 
Регистрация: 17.12.2011
Сообщений: 4,415

Maxmaxmaximus7, хм может так
var panel = $scope.myPanel = new Panel();
myPanel.parent = panel;// пусть пользователь вручную добавляет, или ты создай parent которому при создание присваиваться this.
panel.call($scope);
__________________
Цитата:
Если ограничения и условия описываются как "коробка", то хитрость в том что бы найти именно коробку... Не думайте о чем то глобальном - найдите коробку.
Ответить с цитированием
  #486 (permalink)  
Старый 03.02.2014, 15:33
Профессор
Посмотреть профиль Найти все сообщения от Maxmaxmaximus7
 
Регистрация: 08.01.2014
Сообщений: 354

Сообщение от tenshi
Мне бы хотелось вот так:
так и есть)

Сообщение от tenshi
Точки крепления - да. Но не логика же вычисления условий.
точки крепления) логика описана в контроллерах, взаимодействие с dom описано в директивах,директивы это такие специльные атрибуты.



Сообщение от tenshi
Тогда почему бы не использовать ангуляр?
потому что гш лучше чем ангуляр иначе бы я не начал её писать и использовал ангуляр, помимо того что она не содержит фатальный недостаток, она быстрее, сахарнее, и в ней есть куча фитч которых нет в ангуляре, таких например как FRP формулы и ассинхронные сервисы с кодом синхронных.

Сообщение от tenshi
Двоеточие используется для xmlns. Не стоит идти поперек стандартов.
не стоит не иди, ты может использовать и другие разделители) например - или точку.

Сообщение от tenshi
Ну и изобретать свой язык тоже не стоит без острой необходимости, ибо дебажить
ты волен писать и на обычном языке если у тебя проблема с отладкой, а так же дебжить если ты пишешьт в frp стиле не представляет труда) так как система имеет четкое состояние которое ты можешь хоть отрисовать)

Сообщение от tenshi
Не к чему реализовывать то же самое, но в шаблоне.
плюсики минусики я показал чтобы показать что это выражение и там оно "СЧИТАЕТСЯ" не более) так то конечно не стоит.

Последний раз редактировалось Maxmaxmaximus7, 03.02.2014 в 15:38.
Ответить с цитированием
  #487 (permalink)  
Старый 03.02.2014, 15:37
Профессор
Посмотреть профиль Найти все сообщения от Maxmaxmaximus7
 
Регистрация: 08.01.2014
Сообщений: 354

cyber короче вот такими способами можно создать контроллер


<div ui:controller="List"></div>
<div ui:controller="List()"></div>
<div ui:controller="new List"></div>
<div ui:controller="new List()"></div>
<div ui:controller="Menu = List"></div>
<div ui:controller="Menu = List()"></div>
<div ui:controller="Menu = new List()"></div>




теперь надо придумать какими способами можно обращаться к его полям. может так?
<div ui:controller="Menu = new List()">
  {name}
  {List.name}
  {Menu.name}
</div>

Последний раз редактировалось Maxmaxmaximus7, 03.02.2014 в 15:44.
Ответить с цитированием
  #488 (permalink)  
Старый 03.02.2014, 15:43
Аватар для cyber
I am Student
Отправить личное сообщение для cyber Посмотреть профиль Найти все сообщения от cyber
 
Регистрация: 17.12.2011
Сообщений: 4,415

Сообщение от Maxmaxmaximus7
теперь надо придумать какими способами можно обращаться к его полям. может так?
ну да, зачем избретать велосипед.
__________________
Цитата:
Если ограничения и условия описываются как "коробка", то хитрость в том что бы найти именно коробку... Не думайте о чем то глобальном - найдите коробку.
Ответить с цитированием
  #489 (permalink)  
Старый 03.02.2014, 15:44
Профессор
Посмотреть профиль Найти все сообщения от Maxmaxmaximus7
 
Регистрация: 08.01.2014
Сообщений: 354

cyber,

по поводу обращения к родительским контроллерам с такими же именами, вроде проблему решил:

<div ui:controller="MainMenu = new List()">

  <div ui:controller="SubMenu = new List()">

    {name}          // sub
    {List.name}     // sub
    {SubMenu.name}  // sub
    {MainMenu.name} // main

  </div>

</div>


норм не? то есть ЕЕЕЕСЛИ ВДРУГ такое встретится что человек сделал один одноименный контроллер в другой и внутри внутреннего хочет обратится к полям внешнего, то он сможет сделать так

<div ui:controller="MainList = List">

  <div ui:controller="List">
    
    {name}          // sub
    {MainList.name} // main

  </div>

</div>


он даст верхнему просто второе имя MainList и все) типа псевдоним
Ответить с цитированием
  #490 (permalink)  
Старый 03.02.2014, 15:49
Аватар для cyber
I am Student
Отправить личное сообщение для cyber Посмотреть профиль Найти все сообщения от cyber
 
Регистрация: 17.12.2011
Сообщений: 4,415

Maxmaxmaximus7, угу только тебе прийдеться это все в доке описать, потратишь ты времени на доки
__________________
Цитата:
Если ограничения и условия описываются как "коробка", то хитрость в том что бы найти именно коробку... Не думайте о чем то глобальном - найдите коробку.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Обсуждений тред cyber Оффтопик 2130 03.10.2018 08:10
React'а тред melky Оффтопик 246 13.11.2016 08:07
Webpack'а тред nerv_ Сборка проекта, утилиты 58 07.05.2016 13:46
Github Atom'а тред melky Оффтопик 16 01.04.2015 07:44