您的位置:首页 > 其它

Nitrogen 学习过程实录(12)

2009-02-18 06:30 218 查看
7、Nitrogen 的元件(elements)

元件是构成Nitrogen动态网页的代码片断。元件由Erlang的记录(record)和支持模块(.erl文件)组成,用以告知编译器(rendering engine,直译是“渲染机”,感觉不符合汉语习惯),如何翻译成HTML内容。

许多Erlang元件有HTML的同等对应。例如,元件#span直接译成<span>。

(1) Nitrogen元件的标准属性

id – 元件的名字。

actions – 元件的行为。后面会讲述。

show_if – 值为true或false以显示或隐藏该元件。

class – 元件的CSS类名称。

style – 元件的CSS风格。

大多数元件还有其他特别属性。例如,元件#panel创建HTML标签div,其中就有属性body。元件#checkbox,创建HTML标签checkbox,其中包含着另一个元件text,用以管理checkbox中的文字。

(2) 元件树


元件可以组合成列表,或者嵌套构成复合结构。例如:

Body = #body { body=[

#panel { body=[

#label { text="This is a label." },

#label { id=label1, text="This is another label with a name." },

#button { id=button1, class=mybutton, text="Push Me" }

]}

]}

(3) 直接使用HTML正文

Nitrogen允许你在动态网页中,在元件外部直接书写HTML正文。例如:

Body = #body { body=[

#panel { body=[

#label { text="This is a label." },

"This is some <b>plain</b> HTML.",

#label { text="This is another label." },

"

This is some more HTML. Erlang allows for multiline strings

as long as you escape your double-quotes like this (/").

"

]}

]}

(4) 创建自定义元件

这十分简单。

首先,定义记录如下:

-record(myelement, {?ELEMENT_BASE, attr1, attr2}).

然后,创建名为element_myelement的支持模块。你的模块应该导出函数render(ControlID, Record),由其返回编译后的HTML正文。

render(ControlID, Record)

ControlID – 元件在HTML正文中的id。

Record – 类型为myelement的记录,其中的参数用以创建自定义控件。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: