fulfill
属性
fulfill属性绑定事件表达式的几种格式
fulfill="event-expr" :指定一个事件表达式
fulfill="event-expr1, event-expr2, event-expr3":指定多个事件表达式
fulfill="event-expr=uri-expr" :指定一个事件创建给定uri标识的组
件
fulfill="event-expr1, event-expr2=uri-expr2"
:指定多个事件和创建给定uri标识的组件
fulfill="=uri_expr"
:指定一个URI表达式通过命名标识来创建组件
此处的event-expr,event-expr1 和其他的类似的表达式被称为事件表达式。可以是如下的人一种格式:
event-name :事件表达式
target-id.event-name :组件命名标识的事件表达式
id1/id2/id3.event-name :URI命名的标识URI表达式
${el-expr}.event-name :EL表达式返回的也URI 同上
uri-expr 是一个URI或EL表达式返回的URI。例如,/my/super.zul;${my_super_zul}
指定何时创建子组件。默认(即没有指定fulfill
)情况下,当ZUML页面被加载时,子组件会在父组件之后被创建。
如果你想推迟子组件的创建,你可以通过fulfill
属性指定条件。条件有事件名称,还有可选的目标组件的标识或路径。这意味着直到目标组件指定的事件发生时,子组件才会被处理。如果标识被省略,则假定为当前该组件。
如果指定了EL表达式,则返回一个组件,标识或路径。
参考随机存取(Load on Demand)一节获取更多细节。
若指定了URI表达式,ZK加载器会创建定义在URI内的组件,并像子组件一样分配它们。为了创建定义在指定URI内的组件,ZK实际上调用了定义在Executions
内的createComponents
方法。例如,在下面的例子中,当按钮被按下时,ZK加载器会调用Ecutions.createComponents("/my/super.zul", d, null)
来为d
div 创建子组件。
<button id="b" label="open"/>
<div id="d" fulfill="b.onClick=/my/super.zul">
</div>
若没有指定事件表达式,在分配所有的属性及创建所有的子组件之后,ZK加载器会立刻创建组件。在下面的例子中,ZK会首先创建combobox
,然后创建定义在/my/super.zul
内的组件。
<div fulfill="=/my/super.zul">
<combobox/>
</div>
在ZK执行了fulfill条件之后,即创建了所有的后续组件之后,会触发一个org.zkoss.zk.ui.event.FulfillEvent
实例的onFulfill
事件来通知组件做后续处理,如果有后续事件的话。
例如,你要使用org.zkoss.zk.ui.Components
类的wireVariables
方法,必须再次调用wireVariables
,然后在onFulfill
事件内通知新组件。
<div fulfill="b1.onClick, b2.onOpen"
onFulfill="Components.wireVariables(self, controller)">
...
</div>
分享到:
评论