ホームページ > 記事 > ウェブフロントエンド > riot.js 学習 [5] チャウダー 1
クラスの略語
Riot は、クラス名を生成するための簡単な構文を提供します。例:
[code]<p class={ foo: true, bar: 0, baz: new Date(), zorro: 'a value' }></p>
true 値のみが生成され、false 値は無視されます。生成された結果は次のとおりです:
[code]<p class="foo baz zorro"></p>
もちろん、適切な場所を見つければ、この機能を他の属性にも使用できます~
不正な例を教えてください:
[code]<h1 xxx={a: true, b: 1}></h1>
もちろん、生成されたものも不正です:
[code]<h1 xxx="a b"></h1>
ブラケットエスケープ
エスケープ後、「{」と「}」を出力できます。
[code]\{ 这里的表达式,将不会执行 \}
は出力します:
[code]{ 这里的表达式,将不会执行 }
カスタム括弧
次のように、値を読み取るための括弧を自由に定義できます:
[code]riot.settings.brackets = '${ }' riot.settings.brackets = '{{ }}'
中央のスペースは式の値が配置される場所です
バインディングはエスケープされません HTML
Riot 式は HTML に加えてテキスト値にのみバインドできます。ただし、カスタム タグを使用して HTML コンテンツをバインドすることはできます。例:[code] <raw> <span></span> // 把这个标签的HTML,设为参数的content值 this.root.innerHTML = opts.content; </raw>上記のカスタム タグを使用すると、HTML コンテンツを他のタグに埋め込むことができます:
[code] <todo> <p> 这里有一些HTML的内容—— <raw content="{ html }"></raw> </p> this.html = '我叫:<strong>da宗熊</strong>'; </todo>
todo タグが raw タグとともに埋め込まれていることがわかります。これはRiotにおいて非常に興味深いことです。
ネストされたHTML
Riotには、2e31c9da925543d6bcd942fd3a46db50という非常に重要なタグがあり、タグに埋め込まれたHTMLをタグ定義内で使用できます。
たとえば、タグ定義があります:
[code] <my-tag>
<!-- 这里使用了yield标签 -->
<p>Hello <yield/></p>
this.text = 'world'
</my-tag>
このように使用すると:
[code] <my-tag> <!-- 这部分内容,会替换掉<yield />标签 --> <b>{ text }</b> </my-tag>
結果は次のようになります:
[code]<my-tag> <p>Hello <b>world</b></p> </my-tag>
名前またはIDを持つ要素
如果自定义标签内,元素带有 id 或 name ,这些元素,会自动绑定到标签内容的 context 上,我们可以很简单的通过javascript,获取到这些元素进行操作:
[code] <login> <form id="login" onsubmit={ submit }> <input name="username"> <input name="password"> <button name="submit"> </form> // 上面的元素,已经绑定到this对象中了 var form = this.login, username = this.username.value, password = this.password.value, button = this.submit </login>
当然咯,这些带有 name 或 id 的元素,也可以在标签的HTML内使用,例如:
[code]<div>{ username.value }</div>
事件处理
Riot标签的事件定义,可以通过简单的方式进行绑定:[code] <login> <form onsubmit={ submit }></form> // 表单的提交,会运行下面的submit方法 submit(e) { } </login>如果属性以“on”开头,例如: onclick, onsubmit, oninput等等,它们都接受一个函数,来处理对应的事件。
[code]<form onsubmit={ condition ? mA : mB}></form>如果条件成立,onsubmit执行mA,否则执行mB。
当然,我们可以在事件处理函数中,return true;来让默认事件正常触发。
Event对象
在所有的事件处理函数中,第一个参数,就是event对象。每个event对象,含有下面几个属性:
e.currentTarget 指向事件触发的那个元素
e.target 事件起源的元素,呃,跟e.currentTarget一样
e.which 键盘事件中的按键值【key code】
e.item 当前each循环中,元素绑定的this对象
以上就是riot.js学习【五】杂烩1的内容,更多相关内容请关注PHP中文网(www.php.cn)!