-
Notifications
You must be signed in to change notification settings - Fork 16
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
data() #18
data() #18
Conversation
отличненько, сейчас я это немного причешу и приложу |
Давай, а я посмотрю. А то я типа рубист больше, хотя и считаю себя достаточно искушённым в js. Кстати, я там циклы сделал не итераторами, поскольку на вижу способа замкнуть переменную data, например, в коллбэк так, чтобы оно изменялось и вне коллбэка. Я прав? |
Кстати, и вот из этого new Function("return " + (data || '{}'))() - думаю, можно убрать || {} - это я у тебя скопипастил и забыл убрать. + хорошо бы это сделать парсером json, как в жквери, но я так понял, что по денфолту json парсер не идёт в либе. |
JSON интерфейс есть везде встроенный. кроме старых ИЕ. но это лечится |
Да, про новые браузеры знаю, а для ие ведь придётся подключать http://ru.rightjs.org/plugins/json, верно? Будет просто не очевидное поведение. |
Кстати, я RightJS юзаю вот тут - https://github.com/puffer/puffer, надеюсь это хоть немного поможет популяризации фреймворка, ибо jQuery меня не устраивает в целом. И вот ещё вопрос - ты не думал юзать sizzle для селекторов? Он одна из двух прекраснейших частей jquery. Второй была data() как раз ) Ну и портировать соответствующие методы, типа Element.is() |
http://rightjs.org/plugins/sizzle Element.is -> Element#match |
Точно! Вылетело из головы. Снова перечитываю доки ) |
окей, все кончилось тем, что я встроил JSON плагин в ядро (давно уже пора было) и переписал все следующим образом https://github.com/rightjs/rightjs-core/blob/2.3.0/src/dom/element/commons.js#L164-183 |
Прелесть data не только в том, что можно читать и писать аттрибуты, преобразуя их в структуры данных, но и доступе разной степени вложенности. То есть, если напишу у элемента |
А JSON парсинг - это круто, да. Странно, что в жквери при наличии json в core сделали через задницу - https://github.com/jquery/jquery/blob/master/src/data.js#L323 Это я у них скопировал немного кода. |
про |
В jquery не просто так замутили это дело - http://www.w3.org/TR/html5/elements.html#embedding-custom-non-visible-data-with-the-data-attributes Это дело у них соответствует спецификации. Думаю, right тоже должен соответствовать спецификации w3c - там серьёзные ребята работают. |
Вот по поводу совсем глобального датасета на все элементы - это они да, фигню придумали в jquery. Каждый элемент должен хранить собственный датасет по идее. Ну и ещё мой косяк в том, что я загружаю data- аттрибуты 1 раз. А надо бы проверять каждый раз. Но там становится не очень понятно, как действовать в случае удаления данных из датасета и наличия их в аттрибутах, например. Надо это крепко думать ещё. |
по поводу w3c - давно известно что там работают люди оторванные от реальности :) но вообще идею понял, озадачился. |
Не, шутки-шутками, но ребята своё дело знают и делаю. Хоть и очень медленно ) А идея - я тебе скажу. Я сам уже использовал эту возможность - выборку части дата-сета по составному ключу. Так же, как и выборку общего куска датасета, составленного из разных data- аттрибутов. Удобно это. А чем озадачился? Я по сути сделал всё, тебе надо пройтись и откровенные мои косяки поправить, потому что там да, не всё идеально. Или тебя что-то там сильно не устраивает? Ты расскажи - вместе подумаем. Одна голова - хорошо..., как говорится. |
Во-первых не вижу смысла дупить данные в Во-вторых не стоит прегружать неймспейс отдельными методами Написал поновой https://github.com/rightjs/rightjs-core/blob/2.3.0/src/dom/element/commons.js#L164-206 соответственно юзкейсы https://github.com/rightjs/rightjs-core/blob/2.3.0/test/unit/dom/element/commons_test.js#L171 посмотри плз, ничего не пропустил? |
Думаю, тут ты прав. Можно хранить и в аттрибутах, только алгоритмы будут очень сложными.
Эти методы я сделать только для того, чтобы сделать код более читабельным. Хорошо бы убрать их в приват, только я ещё пока не понял, как. Можно, например, замкнуть их в функцию - и дело в шоколаде
Да вот я сомневаюсь, что оно должно быть так.
Может таки вот так? Плюс метод data() без параметров, по идее, должен возвращать весь дата-сет. |
А хотя подожди. Получается, что я не прав. всё, что после data- преобразуется в имя аттрибута. Таки ты прав. Только если смотреть на спецификацию, получается, что
Что-то я сам запутался.
Это из http://api.jquery.com/data/ |
судя по ссылке на w3c что ты мне давал, там есть пример <div class="spaceship" data-ship-id="92432"
data-weapons="laser 2" data-shields="50%"
data-x="30" data-y="10" data-z="90">
<button class="fire"
onclick="spaceships[this.parentNode.dataset.shipId].fire()">
Fire
</button>
</div> см. |
|
Да, но верблюжируются они от самой data- |
помоему от текущего скопа, просто |
Я говорю о том, что https://github.com/rightjs/rightjs-core/blob/2.3.0/test/unit/dom/element/commons_test.js#L171 - этот спек не правильный получается. data-thing-one - это data('thingOne') и не получится сделать data('thing') |
ммм... не понял. можно сделать |
Всё. Теперь я понял окончательно. Всё здорово тогда. |
Отлично, я тогда помечаю 2.3.0 тегом и надеюсь через пару часов будет релиз :) |
Тебя как зовут вообще? :) хочется помянуть в кредитсах. и ссылку на куданибудь если можно |
Аркадий. https://github.com/pyromaniac ссылка ) |
а фамилия? :) |
Да вот я думаю, лучше даже без имени ) pyromaniac и всё. |
вручную credits писать нафига? тупо ссылку на https://github.com/rightjs/rightjs-core/contributors |
ну ладно :) приятно познакомиться кстати |
И мне тоже. |
@myfreeweb просто хочу помянуть кто что делал |
Да ладно, от моего кода там ничего не осталось ) Потом что-нибудь стоящее напишу. Надо двигать райт. Засилие жквери меня вгоняет в дипрессию, а прототайп умер. Самое неприятное, что из-за мощной поддержки сообщества приходится в больших проектах юзать жквери. А райт оставлять либо для личных, либо для небольших проектов, про которые просто забываешь после окончания. |
ну осталось не осталось, а носом тыкнули тоже спасибо. я вот не в курсе вообще был про эти дела. тесты кстати остались :) |
Я таки сделал это. Кажется.