作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个包含两个不同 View 模型的页面:
<?page title="My page" contentType="text/html;charset=UTF-8"?>
<div apply="org.zkoss.bind.BindComposer"
viewModel="@id('vm') @init('com.mycompany.FirstViewModel')">
<!-- A lot of unimportant stuff -->
<tabbox>
<tabs>
<tab label="Tab1" ></tab>
<!-- Other unimportant tabs -->
</tabs>
<tabpanels>
<tabpanel>
<include src="inc/other.zul" p="@ref(vm.selected)" pid="@ref(vm.selected.id)" ></include>
</tabpanel>
</tabpanels>
</tabbox>
</div>
<window>
<label id="sid" value="@load(pid)" />
<div apply="org.zkoss.bind.BindComposer"
viewModel="@id('vms') @init('com.mycompany.SecondViewModel')">
<listbox model="@id('vars') @load(p.someList)"
selectedItem="@bind(vms.selected)"
emptyMessage="No data in list">
<!-- Template and stuff -->
</listbox>
<label id="sid1" value="@load(pid)" />
</div>
</window>
<div apply="org.zkoss.bind.BindComposer"
viewModel="@id('vms') @init('com.mycompany.SecondViewModel')" list="@ref(p.someList)">
<listbox model="@id('vars') @load(list)"
selectedItem="@bind(vms.selected)"
emptyMessage="No data in list">
最佳答案
您无法访问外部组件的原因是您的 Composer ,即 BindComposer,您对 Main zul 和 Included zul 具有相同的 Composer 。您需要从外部 ZUL 访问 Included Listbox。
所以删除 Include ZUL 的 Composer,给窗口一个 ID,你有两个空间所有者访问内部列表框
<?page title="My page" contentType="text/html;charset=UTF-8"?>
<div apply="org.zkoss.bind.BindComposer"
viewModel="@id('vm') @init('com.mycompany.FirstViewModel')">
<!-- A lot of unimportant stuff -->
<tabbox>
<tabs>
<tab label="Tab1" ></tab>
<!-- Other unimportant tabs -->
</tabs>
<tabpanels>
<tabpanel>
<include id="include" src="inc/other.zul" p="@ref(vm.selected)" pid="@ref(vm.selected.id)" ></include>
</tabpanel>
</tabpanels>
</tabbox>
</div>
<window id="win">
<label id="sid" value="@load(pid)" />
<div
viewModel="@id('vms') @init('com.mycompany.SecondViewModel')">
<listbox id="listbox2" model="@id('vars') @load(p.someList)"
selectedItem="@bind(vms.selected)"
emptyMessage="No data in list">
<!-- Template and stuff -->
</listbox>
<label id="sid1" value="@load(pid)" />
</div>
</window>
现在,在您的 BindComposer 中访问时,将变量声明为 public :
Listbox include$win$listbox2;
在你的 doAfterCompose() 添加这一行
Sysout("You can access your inner Listbox and it is:"+include$win$listbox2);
现在你看到你不会让你的列表框为空!!
关于data-binding - 如何将数据绑定(bind)到 subview 模型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10798186/
我是一名优秀的程序员,十分优秀!