8、规定元件的行为(actions)
在Elang中,术语“action”含义广泛。元件属性actions可以赋予的任何值,都是action。在网页上,action决定元件的表现。你可以指定各元件的行为,并且,有的行为可以嵌套指定。
Nitrogen在编译大多数行为时,简单地将Javascript命令赋予元件。这些Javascript命令在网页载入后,可能立即执行,改变元件的状态,或者监听特定事件,如鼠标点击、光标位置等等。
(1)、如何指定行为
行为指定的方式有2种,一是直接嵌入,二是调用函数wf:wire。第二种方式需要确定元件的名字。除此之外,两种方式的效果相同。
(2)、直接嵌入的行为
下面的代码以脚本语句Effect.Highlight,生成一级大字标题的HTML内容。例如:
#h1 { text="A Heading", actions=#effect_highlight{} }
你可以用列表指定多个行为:
#h1 { text="A Heading", actions=[
#effect_highlight{},
#effect_appear{}
]}
(3)、通过函数wf:wire(...)指定行为
#h1 { id=headline, text="A Heading" }
...
wf:wire(headline, #effect_highlight{})
你也可以用列表指定多个行为:
#h1 { id=headline, text="A Heading" }
...
wf:wire(headline, [
#effect_highlight{},
#effect_appear{}
])
(4)、直接调用Javascript
Nitrogen允许你在元件上直接调用Javascript,并且可在调用过程中引用元件。
你可以用obj('me')得到当前元件,obj('me.child1.child2')得到当前元件的子元件,或者用obj('element1.element2') 引用网页上的其他元件。
下面是个示例,以提示窗口显示当前元件的id:
#h1 { id=headline, text="A Heading", actions="alert(obj('me').id)"}
或者:
#h1 { id=headline, text="A Heading" }
...
wf:wire(headline, "alert(obj('me').id)")