2016-01-31 3 views
1

Используя om.next и sablono, я пытаюсь создать кнопку с mdl, как видно there.om.next sablono визуализировать вложенные элементы в кнопку

Вот что я пытался в моем render метод:

;; This works but misses the icon 
[:input {:type "submit" 
     :className "mdl-button mdl-js-button mdl-button--fab mdl-js-ripple-effect mdl-button--colored" 
     :value "ok"}] 

;; The following work, but I would like to avoid using a string 
[:button {:className "mdl-button mdl-js-button mdl-button--fab mdl-js-ripple-effect mdl-button--colored" 
      :dangerouslySetInnerHTML {:__html "<i class=\"material-icons\">add</i>" }}] 


;; All the following do not render the inside of the icon properly 

[:input {:type "submit" 
     :className "mdl-button mdl-js-button mdl-button--fab mdl-js-ripple-effect mdl-button--colored" 
     :dangerouslySetInnerHTML {:__html [:i {:className "material-icons"} "add"]}}] 

[:input {:type "submit" 
     :className "mdl-button mdl-js-button mdl-button--fab mdl-js-ripple-effect mdl-button--colored"} 
[:i {:className "material-icons"} "add"]] 

[:input {:type "submit" 
     :className "mdl-button mdl-js-button mdl-button--fab mdl-js-ripple-effect mdl-button--colored" 
     :dangerouslySetInnerHTML {:__html ~(html [:i {:className "material-icons"} "add"])}}] 
+0

Обновление: я сделал пакет response-mdl https://github.com/cljsjs/packages/tree/master/react- mdl/resources/cljsjs/react-mdl (хотя я больше не использую его, но он получил обновления уже на cljsjs - yay OSS). – nha

ответ

1

мне придется взять sablono из уравнения. Этот пример работает:

(defui MDSubmitButton 
    Object 
    (render [this] 
    (dom/button (clj->js {:className "mdl-button mdl-js-button mdl-button--fab mdl-button--colored"}) 
       (dom/i (clj->js {:className "material-icons"}) "add")))) 
(def md-submit-button (om/factory MDSubmitButton {:keyfn :id})) 

Недостающий ингредиент для меня эта линия:

<link rel="stylesheet" href="https://fonts.googleapis.com/icon?family=Material+Icons"> 

, в разметке.

В общей сложности это все разметки я использовал:

<link href="/css/material.css" rel="stylesheet" type="text/css"> 
<link href="https://fonts.googleapis.com/icon?family=Material+Icons" rel="stylesheet"> 

Я считаю, что Javascript необходим эффект волны и так далее, просто не нужно, чтобы ответить на этот вопрос.

Я подозреваю, что вы также пропустили «Иконки материалов». Чтобы узнать, что на самом деле происходит, я нажал графику/кнопку «Открыть в CodePen» с this page

+0

Здравствуйте, нет, у меня есть все эти импорты, и он работает для встроенной (второй) версии. Однако я бы хотел избежать поля «dangerouslySetInnerHTML». – nha

+0

Привет. Ну, теперь ты меня в Material UI. Я до сих пор использую семантический интерфейс, но недостаточно сделан, чтобы не меняться. Будет интересно посмотреть, как Sablono взлетает (или нет) с ON. Я не могу понять, что это дает вам гораздо больше. Я собирался использовать его с самого начала, но сайт Github никогда ничего не говорил о Om Next, поэтому я оставил его в покое. –

+0

Вы успешно используете семантику с включенным ПО? Что касается встроенного продукта, в этом примере это не дает многого, но все же он чувствует себя взломанным (и я только начал с материала). – nha