0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Mithril.jsのコンポーネントでドハマリ

Posted at

すっかり準備を忘れてました。
日付が変わる前に間に合えばセーフでしょうか。。。
さっぱりフロントエンドに開発に疎いのですが、仮想DOMとはなんぞや?という興味から最近Mithril.jsを触っています。

すみません、時間がないのでここまでで一番嵌った思い出を。

コンポーネントでのHTMLタグ属性の制御

テキストボックをカプセル化するコンポーネントを作ろうとして。
特定のテキストボックスだけは読み取り専用にしたい、となってdisabeledを使う分にはなんの問題もなく。

<input type="text" id={item.id} class={item.cls} 
       value={item.value} onchange={m.withAttr("value", item.value)} 
       disabled={item.disabled} />

しかし、disabledではなくreadonlyだと選択、コピーができていいな!となって同じように設定するもうまく動かず。
ずっとハマってif文で分けるしかないのか……と悩んでいたある日、公式ドキュメントを眺めていたらそのものズバリの回答が。

以下Mithril.jsのAPIガイド m - Mithril からの引用です。

//`readonly`の設定にJavaScript文法(大文字の"O"になる)を使用
//HTML属性とは異なり、JavaScriptのプロパティではboolean型を使用する
m("input", {readOnly: true}); //yields <input readonly />

//HTML属性名は`setAttribute`が使われるため期待と異なることがある
m("input", {readonly: false}); //<input readonly="false" />は属性が存在するので読み込み専用

ここでは上記の通りreadonlyではなくreadoOnlyを使う、が正解でした。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?