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

Vlasenko Fedor 02.02.2014 21:27

Цитата:

Сообщение от Maxmaxmaximus7
как передавать несколько значений

через запятую, []
Цитата:

Сообщение от Maxmaxmaximus7
css:color="red"

css.color="red" все значения сss строковые если ты хочешь ее переменной оформляй кодом который будет вычеслятся, к примеру $red, {red}
Maxmaxmaximus7,
объясни почему <div>, почему не <i></i>, или <m></m>, я с той позиции, что точка одна клавиша, а : -две

cyber 02.02.2014 21:35

Maxmaxmaximus7, ты юзаешь eval?

Maxmaxmaximus7 02.02.2014 21:40

Цитата:

Сообщение от cyber
ты юзаешь eval?

нет, я юзаю new Function() и создаю Exp обьекты, но не об этом щас) я ивал для простоты написал

Цитата:

Сообщение от Poznakomlus
объясни почему <div>, почему не <i></i>, или <m></m>

пиши элемент какой хочешь, это к сути не относится.

Цитата:

Сообщение от Poznakomlus
я с той позиции, что точка одна клавиша, а : -две

выходит сделаю несколько разделителей, но мне хотелось найти иделаьный вариант и заставить всех писать на нем(

Цитата:

Сообщение от Poznakomlus
css.color="red" все значения сss строковые

ну видишь, получится что одни директивы принимают строки, другие выражения, третьи вначале строки потом выражения. и все это хрен запомнишь. надо как-то унифицировать, придумать идеальный синтаксис. или это ложный страх у меня?

Цитата:

Сообщение от Poznakomlus
объясни почему <div>

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

Maxmaxmaximus7 02.02.2014 21:54

ui.directive('onClick', function(scope, element, attrs, params){
    attrs = // {onClick: 'alert(11)'}
    params = // [exp]
});



ну короче как-то так будет наверное, типа будет метод "распарсить параметры".

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

Maxmaxmaximus7 02.02.2014 22:06

или лучше вот так, не exp а сразу значения, exps хранятся в обьекте params и если надо можем достать, так проще, мы просим скоуп слушать изменения в обьекте параметров и как только они будут, мы будем переназначать css свойства )) к слову элемент поставляется в jQuery подобной коллекции как вы заметили.

<div css:position="panel.x, panel.y">

</div>




ui.directive( 'cssPosition', function( scope, element, attrs, params ) {
    
    element.css( 'position', 'absolute' );


    scope.$watch( params, function() {

      var x = params[0]; // 102
      var y = params[1]; // 37

      element.css( {
        'left'    : x,
        'top'     : y
      } );

    } );
    

  } );



хотим просто получить строку с параметрами и распарсить руками? не вопрос
attrs['cssPosition'] // 'panel.x, panel.y'

Maxmaxmaximus7 02.02.2014 22:46

в принципе инстанцирование контроллеров было нужно только чтобы была возможность достучиваться до свойств родительских контролеров, и я подумал, а почему не сделать ТАК???? :D

<div ui:controller="Main">

  <div ui:controller="Panel">

    {name}       // Панель
    {Panel.name} // Панель
    {Main.name}  // Крот

  </div>

</div>




function Main() {
    name = 'Крот'
}

function Panel() {
    name = 'Панель'
}


за идею спасибо небезызвестному cyber

cyber 02.02.2014 23:24

Цитата:

Сообщение от Maxmaxmaximus7
за идею спасибо небезызвестному cyber

пожалуйста:)

Maxmaxmaximus7 03.02.2014 12:21

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

<div ui:controller="ParentList = List('parent')">

  <div ui:controller="List('child')">
    {name}            // child
    {List.name}       // child
    (ParentList.name) // parent
  </div>

</div>


function List( newName ) {
    name = newName
}



И вводим негласное правило, имена контроллеров должны быть с заглавной буквы. Тут нет такого что вот конструктор с заглавной а сам инстанс с маленькой, нет больше ни какого инстанса, контроллер разворачиваетя в текущий скоуп.

то есть вот контроллер

function List() {
    name = 'list'
}


и когда мы напишем так

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

то текущий скоуп у нас станет таким

var scope = {}
scope.name = 'list';
scope.List = scope;


--------
напишем так
<div ui:controller="Ololo = List"></div>


скоуп станет таким

var scope = {}
scope.name = 'list';
scope.List = scope;
scope.Ololo = scope;


короче все это типа ОПАСННО что перекроется ВНЕШНЕЕ бла бла бла, но это не так, с этим мы тоже поборимся

cyber 03.02.2014 12:54

Я возможно глупость сморожу, но все же:
По сути функции контроллеры использует тольку ui, почему бы не переписывать эти функции в локальный объект, и затирать их с глобального window.
Цитата:

Сообщение от Maxmaxmaximus7
короче все это типа ОПАСННО что перекроется ВНЕШНЕЕ бла бла бла, но это не так, с этим мы тоже поборимся

О чем ты?

tenshi 03.02.2014 14:02

> так же как и ангуляр, тока скобки одинарные

Это как? Для каждого атрибута по отдельной директиве?
Мне бы хотелось вот так:
<a href="ya.ru" tabindex="{tabIndex}">ya.ru</a>


> потому что в верстве описывается структура, это то место где мы все описываем и соединяем воедино, точки крепления css классов и лочки препления логики javascript.

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

> Так же датабинлинг подобного типа лучше так как позволяет к одному контроллеру использовать разные шаблоны, так же контроллеры независимы от шаблонов и могут работать самостоятельно.

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

> В общем то же что и в ангуляре.

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


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