我正在开发一个大型的全球应用程序,其中包括低带宽区域的访问。因此,我想对所有复杂隐藏/计算时使用最少的SSJS或部分刷新。以下是我迄今为止一个简单的“隐藏/时”:我们如何才能使用客户端脚本“hide/whens”?
- 是/否单选按钮,与CSJS显示面板(“是”)或隐藏 面板(“否”) 。
- 面板中有一个formTable,并按照#1显示或隐藏值。
在XPage上的onClientLoad,下面的代码运行:
// "getRadioValue" is a simple script to return the value of a radio button var v_value = getRadioValue("#{id:radioButton}"); v_div = '#{javascript:getClientId("radioButtonPanel")}'; // show or hide div simply use dojo to change the display of the panel if (v_value == 'Yes') { showDiv(v_div); } else { hideDiv(v_div); };
对于一个新文档时,onClientLoad脚本将隐藏 “radioButtonPanel” 成功。将单选按钮更改为“是”将显示radioButtonPanel,就像单击“否”将隐藏它。它很棒! :-)
一旦保存文档并在读取模式下重新打开,虽然onClientLoad CSJS事件应该读取文档中保存的值,并决定是否显示面板。当文档在编辑模式下打开时,onClientLoad会触发,读取radioButton值并成功显示或隐藏面板。
这是我到目前为止已经试过,让它在读模式工作:
- 在CSJS,使用“#{的javascript:currentDocument.getItemValueString(‘单选按钮’}”来获得值,
- 做一些计算中的“渲染”或“可见”的属性,但是这是SSJS,如果隐藏,防止任何的“显示/ hideDiv” CSJS可见样式的变化。
添加一个老式“ div“来计算样式(这是我在XPages之前所做的),但由于我无法再通过传递html,我似乎无法获得CSJS计算对风格的评价。理想情况下,我可以做这样的事情:
<div id="radioButtonPanel" style="<ComputedValue>">
凡ComputedValue将读取该文件的后端价值,并决定添加什么或“显示:无”。
请注意,我不想使用viewScopes,因为这个长表格在所有其他hide/when中需要很多。
有没有办法让这个100%的CSJS?我觉得我非常接近,但是我想知道在整个过程中是否有什么我只是缺少的东西。
您提到你不能通过传递...为什么不呢? – 2013-03-25 23:48:51