试图通过CSJS在视镜中设置BS手风琴的状态,但值始终相同(并且不正确)

问题描述 投票:0回答:1

在我的XPage上,我定义了一个BS手风琴:

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

在按钮上,我想保存面板的状态,因此在完全刷新后,我想以其先前状态显示手风琴面板。

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

<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>

不管风琴是哪种状态,即使脚本标识了风琴的正确状态,viewScope的“ accordian”也被设置为“ expanded”。

我在做什么错?

更新:

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

<xe:jsonRpcService
                                id="rpcServiceSetState">
                            <xe:this.methods>
                                <xe:remoteMethod
                                    name="setPanelState"
                                    loaded="true"
                                    script="viewScope.put('accordian', unid)">
                                    <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>

在我的XPage上,我定义了BS手风琴:

在按钮上,我想保存...的状态...
javascript twitter-bootstrap xpages
1个回答
0
投票

[如果您使用浏览器开发人员工具并查看浏览器上的内容,将会看到问题的根源。 SSJS仅在服务器上运行,并且代码的结果被注入到CSJS函数中并传递给浏览器。 CSJS仅在浏览器上运行,而不能在服务器上运行。

© www.soinside.com 2019 - 2024. All rights reserved.