ウェブサイトで新しいmaterial-design-lite (mdl) を使用しています。また、 mustache.jsを使用して動的コンテンツを読み込んでいます。
ここで、新しく作成された要素upgradeElement
を mdl の関数を使用して登録し、それらを認識して JavaScript を適用する必要があります。彼らのウェブサイトには、これを行うためのサンプルコードがいくつかあります。
<div id="container"/>
<script>
var button = document.createElement('button');
var textNode = document.createTextNode('Click Me!');
button.appendChild(textNode);
button.className = 'mdl-button mdl-js-button mdl-js-ripple-effect';
componentHandler.upgradeElement(button);
document.getElementById('container').appendChild(button);
</script>
ただし、私は jQuery を使用しており、取得したテンプレート全体を解析してmustache.js
各コンポーネントを正しく登録する方法が完全にはわかりません。これは私が試したことです:
var filledTemplate = '
<div class="mdl-card mdl-shadow--2dp">
<div class="mdl-card__title">
<h2 class="mdl-card__title-text">Title</h2>
</div>
<div class="mdl-card__supporting-text">
<p>A simple paragraph with below some radio buttons</p>
<p>
<label class="mdl-radio mdl-js-radio mdl-js-ripple-effect" for="input_0">
<input type="radio" id="input_0" class="mdl-radio__button" name="options" value="radio1" />
<span class="mdl-radio__label">Radio button 1</span>
</label>
</p>
<p>
<label class="mdl-radio mdl-js-radio mdl-js-ripple-effect" for="input_1">
<input type="radio" id="input_1" class="mdl-radio__button" name="options" value="radio2" />
<span class="mdl-radio__label">Radio button 2</span>
</label>
</p>
</div>
<div class="mdl-card__actions mdl-card--border">
<a class="mdl-button mdl-button--colored mdl-js-button mdl-js-ripple-effect">
Send
</a>
</div>
</div>';
var html = $.parseHTML(filledTemplate);
$(html).find(".mdl-js-button").each(function(){
componentHandler.upgradeElement($(this));
});
はfilledTemplate
、それが含むことができるものの明確なアイデアを与えるためのものです。すべての入力、テキストエリア、スライダー、ラジオ、チェックボックス、およびボタンをバインドする必要があります。上記の例では、2 つのラジオ ボックスと 1 つのボタンを含む、mdl からの単純なカード レイアウトを確認できます。
最初にボタン要素をアップグレードするように componentHandler を取得しようとしましたが、mdl が を返すelement.getAttribute is not a function
ので、間違った値を に与えているだけだと思います.upgradeElement()
。
ここで何が間違っていますか?
例としてコードペンを次に示します: http://codepen.io/anon/pen/JdByGZ