Дизайн select
функціональності в матеріалізованому CSS, на мій погляд, досить вагомий привід не використовувати його.
Ви повинні ініціалізувати вибраний елемент material_select()
, як згадує @ littleguy23. Якщо цього не зробити, поле вибору навіть не відображається! У старомодному додатку jQuery я можу ініціалізувати його у функції, готовій до документа. Здогадаєтеся, що ні я, ні багато інших людей не використовуємо jQuery в наші дні, а також ми не ініціалізуємо свої програми в готовому документі.
Динамічно створений вибір . Що робити, якщо я створюю вибрані динамічно, такі як відбувається в такій рамці, як Ембер, яка генерує погляди на льоту? Я маю додати логіку в кожному огляді, щоб ініціалізувати поле вибору кожного разу, коли генерується представлення, або написати змішаний вигляд, щоб обробити це для мене. І це гірше, ніж це: коли генерується представлення, і в Ембер термінах didInsertElement
викликається, прив'язка до списку параметрів для поля вибору ще не була вирішена, тому мені потрібна спеціальна логіка спостереження за списком параметрів, щоб зачекати, поки він не буде заповнюється перед викликом до material_select
. Якщо параметри змінюються, як вони легко можуть, material_select
поняття про це не має і не оновлює спадне меню. Я можу зателефонувати material_select
ще раз, коли параметри змінюються, але виявляється, що це нічого не робить (ігнорується).
Іншими словами, здається, що припущення дизайну, що стоїть у вікні вибору CSS, полягає в тому, що вони всі знаходяться під час завантаження сторінки, і їх значення ніколи не змінюються.
Впровадження . З естетичної точки зору я також не прихильний до того, як матеріалізація CSS реалізує свої спадні місця, а це створити паралельний, тіньовий набір елементів десь ще в DOM. Зрозуміло, альтернативи, такі як select2, роблять те ж саме, і іншого способу досягти деяких візуальних ефектів (можливо?) Може бути не існує. Мені, однак, коли я оглядаю елемент, я хочу бачити елемент, а не якусь тіньову версію деінде, яку хтось магічним чином створив.
Коли Ембер руйнує погляд, я не впевнений, що матеріалізований CSS розриває тіньові елементи, які він створив. Насправді я був би дуже здивований, якщо це станеться. Якщо моя теорія правильна, оскільки погляди генеруються та знищуються, ваш DOM в кінцевому підсумку забрудниться десятками наборів тіньових спадів, не пов’язаних ні з чим. Це стосується не лише Ембер, але й будь-якого іншого фронтального основи OPA на основі шаблону MVC / шаблону.
В'язки . Я також не зміг зрозуміти, як отримати значення, вибране в діалоговому вікні, щоб прив’язатись до всього корисного в рамках, наприклад, Ember, що викликає вибрані поля через {{view 'Ember.Select' value=country}}
інтерфейс типу. Іншими словами, коли щось вибрано, country
оновлення не оновлюється. Це розбійник угод.
Хвилі . До речі, ті ж самі питання стосуються ефекту "хвилі" на кнопках. Ви повинні ініціалізувати його щоразу, коли створюється кнопка. Мені особисто байдуже хвильовий ефект і не розумію, у чому вся суєта, але якщо ви хочете хвилі, будьте в курсі, що ви витратите добру частину свого життя, переймаючись питаннями, як це зробити ініціалізуйте кожну кнопку, коли вона створена.
Я ціную зусилля, докладені хлопцями з матеріальної CSS, і там є кілька приємних візуальних ефектів, але він занадто великий і має занадто багато ґутчей, таких як вище, щоб я був би тим, що я б використав. Зараз я планую вирвати матеріалізований CSS з мого додатка і повернутися або до Bootstrap, або до шару поверх Suit CSS. Ваші інструменти повинні полегшити ваше життя, а не важче.
<select class="browser-default">