首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ZK模型的NotifyChange部分

ZK模型的NotifyChange部分
EN

Stack Overflow用户
提问于 2015-01-09 19:40:52
回答 1查看 1.6K关注 0票数 2

在我的zul中,我有一个Grid,我为它使用了两个命名的模板。我在zul中使用了我的VM中的一个模型,这是我在Grid模板中使用的。现在我正在修改VM中线程中的模型,在线程完成后,我是VM中的postNOtifyingChange。问题是,我只想修改zul中模型的一部分(被线程修改了)。因为如果视图中的另一部分也被刷新,那么当postNotifyChange触发时,用户所做的更改将丢失。zul代码是:

代码语言:javascript
复制
 <window apply="org.zkoss.bind.BindComposer"
    viewModel="@id('vm') @init('The View Model')"
    validationMessages="@id('vmsgs')">
    <grid id="componentgrid" height="900px" model="@load(vm.tablefields) @template((vm.displayEdit) ? 'editable' : 'noneditable')">
        <columns>
            <column>Attribute</column>
            <column>NOSS</column>
            <column>Beacon</column>
        </columns>
        <rows>
            <template name="noneditable">
                <row>
                    <label value="${each.attributename}"></label>
                    <label value="${each.attributevalue}"></label>
                    <label value="${each.beaconValue}"></label>


                </row>
            </template>

            <template name="editable">
                <row>

                    <label value="${each.gui_label}"></label>
                    <zk choose="">
                        <zk when="${each.enum_map ne null}">
                            <combobox id="${each.name}" value="${each.value}" width="150px">
                                <comboitem label="${each.value}" value="${each.key}"
                                    forEach="${each.enum_map}" />
                            </combobox>
                        </zk>
                        <zk when="${each.date == true}">
                            <datebox id="${each.name}" cols="12" format="short "
                                value="${each.datevalue}" />
                        </zk>
                        <zk>
                            <textbox id="${each.name}" value="${each.value}" />
                        </zk>
                    </zk>
                    <label value="${each.beaconValue}"></label>

                </row>


            </template>

        </rows>
    </grid>
    </window>

所以这里我只想在"${each.beaconValue}“part.In part.In ViewMOdel上使用BindUtils.postNotifyChange(null, null,NNComponentDetailViewModel.this, "tablefields");来通知这个模型中的更改。这个方法正确吗?如何才能做到这一点,即只有部分模式将被改变?或者我认为ZK只允许网格中的一个模型的其他方法。请建议,因为这似乎被阻止,因为ZK框架的限制。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-01-10 07:10:54

如果您想要更改模型的一部分,您必须说对象已被更改。

例子:

代码语言:javascript
复制
BindUtils.postNotifyChange(null, null, oneObjectOfYourModel, "*"); 

或者,如果您只想更改"beaconValue“:

代码语言:javascript
复制
BindUtils.postNotifyChange(null, null, oneObjectOfYourModel, "beaconValue");

当然,当您调整几乎所有对象时,您必须多次调用通知,但这是解决问题的方法。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27867974

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档