`
徜徉の小溪
  • 浏览: 447614 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

ZK fulfill 属性的延迟加载组建

    博客分类:
  • ZK
阅读更多

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>
1
1
分享到:
评论
1 楼 okjbc 2011-05-09  
能不能补充一下fulfill在程序中怎么定义
Global site tag (gtag.js) - Google Analytics