ZK fulfill 属性的延迟加载组建

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表达式

若指定了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>
onFulfill事件

在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>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值