gpt4 book ai didi

javascript - 尝试从 CSJS 在 vi​​ewscope 中设置 BS Accordion 的状态,但值始终相同(且不正确)

转载 作者:行者123 更新时间:2023-12-02 22:21:35 26 4
gpt4 key购买 nike

在我的 XPage 上,我定义了 BS Accordion :

<div class="panel-collapse collapse in" id="collapseOne" aria-expanded="true" style="">
</div>

在按钮上,我想保存面板的状态,因此在完全刷新后,我想以之前的状态显示 Accordion 面板。

所以我的按钮现在看起来如下:

<xp:button
value="Label"
id="button1">
<xp:eventHandler
event="onclick"
submit="true"
refreshMode="complete">
<xp:this.script><![CDATA[if ($('#collapseOne').attr('aria-expanded') == "false") {
"#{javascript:viewScope.put('accordian','collapsed')}";
}else{
"#{javascript:viewScope.put('accordian','expanded')}";
}]]></xp:this.script>
</xp:eventHandler>
</xp:button>

无论 Accordion 处于什么状态,即使脚本识别了 Accordion 的正确状态,viewScope“ Accordion ”也会设置为“展开”。

我做错了什么?

更新:

我按照建议设置了 RPC 服务,但它不起作用。我做错了什么?

<xe:jsonRpcService
id="rpcServiceSetState">
<xe:this.methods>
<xe:remoteMethod
name="setPanelState"
loaded="true"
script="viewScope.put('accordian', state)">
<xe:this.arguments>
<xe:remoteMethodArg
name="state"
type="string">
</xe:remoteMethodArg>
</xe:this.arguments>
</xe:remoteMethod>
</xe:this.methods></xe:jsonRpcService>
<xp:button id="btnTriggerRPC" value="Trigger RPC Method">
<xp:eventHandler
event="onclick"
submit="true" refreshMode="complete">
<xp:this.script><![CDATA[if ($('#collapseOne').attr('aria-expanded') == "false") {
rpcServiceSetState.setPanelState('collapsed')
}else{
rpcServiceSetState.setPanelState('expanded')
}]]></xp:this.script>
</xp:eventHandler>
</xp:button>

最佳答案

下面的代码允许我通过 RPC 服务设置 View 范围?

<xe:jsonRpcService id="jsonRpcServiceSelected"
serviceName="rpcService" rendered="true">
<xe:this.methods>
<xe:remoteMethod name="setAccordion"
script="viewScope.put('accordion', selected);">
<xe:this.arguments>
<xe:remoteMethodArg name="selected" type="string" />
</xe:this.arguments>
</xe:remoteMethod>

</xe:this.methods>
</xe:jsonRpcService>
<xp:button id="btnTriggerRPC" value="Trigger RPC Method">
<xp:eventHandler
event="onclick"
submit="true"
refreshMode="complete">
<xp:this.script><![CDATA[if ($('#collapseOne').attr('aria-expanded') == "false") {
rpcService.setAccordion('collapsed');

}else{

rpcService.setAccordion('expanded');
}]]></xp:this.script>
</xp:eventHandler>
</xp:button>

关于javascript - 尝试从 CSJS 在 vi​​ewscope 中设置 BS Accordion 的状态,但值始终相同(且不正确),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59211467/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com