Javascript-форум (https://javascript.ru/forum/)
-   Оффтопик (https://javascript.ru/forum/offtopic/)
-   -   Унылого треша тред (https://javascript.ru/forum/offtopic/47728-unylogo-tresha-tred.html)

tenshi 03.02.2014 14:04

Цитата:

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

а сам буду использовать няшное двоеточие

Двоеточие используется для xmlns. Не стоит идти поперек стандартов.

tenshi 03.02.2014 14:07

Цитата:

Сообщение от Maxmaxmaximus7 (Сообщение 295408)


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

1) не рекомендуется использовать точки с запятой, так как они не красивые
2) если не обьявлен var то переменная считается свойством контроллера, если обьявлен, то не считается
3) если идет приравнивание круглых скобочек, то считается что это формула, и вешается геттер, при обращении к которому значение формулы будет пересчитываться
4) сервисы доступны по умолчанию в любом месте кода контроллера, и их имена начинаются с бакса.
5) сервисы поддерживают ассинхронность, и если сервис поддерживает (а например встроенный сервис $http поддерживает) то после окончания запроса в поле в которое мы его присвоили (куда временно поместилась навидимая формула с промисом) поместится результат запроса.

Ну и изобретать свой язык тоже не стоит без острой необходимости, ибо дебажить потом это не ахти какое удовольствие.

tenshi 03.02.2014 14:10

Цитата:

Сообщение от Maxmaxmaximus7 (Сообщение 295413)
И еще ребят, вот тут уж точно с вами посоветоваться нужно, как лучше передавать параметры в директивы? Смотрите, вот в ангуляре там каждая директива принимает СТРОКУ и парсит её, выпарсивая из неё значения. она может воспринято эту строку как выражение и выполнить его через 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"

Заниматься вычислениями - задача вью-модели. На нормальном языке программирования. Где есть циклы, функции, объекты, наследование и прочая фигня. Не к чему реализовывать то же самое, но в шаблоне.

Maxmaxmaximus7 03.02.2014 15:19

Цитата:

Сообщение от 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 чтобы обратится к свойствам контроллера.

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

cyber 03.02.2014 15:26

Maxmaxmaximus7, хм может так
var panel = $scope.myPanel = new Panel();
myPanel.parent = panel;// пусть пользователь вручную добавляет, или ты создай parent которому при создание присваиваться this.
panel.call($scope);

Maxmaxmaximus7 03.02.2014 15:33

Цитата:

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

так и есть)

Цитата:

Сообщение от tenshi
Точки крепления - да. Но не логика же вычисления условий.

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



Цитата:

Сообщение от tenshi
Тогда почему бы не использовать ангуляр?

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

Цитата:

Сообщение от tenshi
Двоеточие используется для xmlns. Не стоит идти поперек стандартов.

не стоит не иди, ты может использовать и другие разделители) например - или точку.

Цитата:

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

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

Цитата:

Сообщение от tenshi
Не к чему реализовывать то же самое, но в шаблоне.

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

Maxmaxmaximus7 03.02.2014 15:37

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>

cyber 03.02.2014 15:43

Цитата:

Сообщение от Maxmaxmaximus7
теперь надо придумать какими способами можно обращаться к его полям. может так?

ну да, зачем избретать велосипед.

Maxmaxmaximus7 03.02.2014 15:44

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 и все) типа псевдоним

cyber 03.02.2014 15:49

Maxmaxmaximus7, угу только тебе прийдеться это все в доке описать, потратишь ты времени на доки:)


Часовой пояс GMT +3, время: 07:22.