jor*_*cke 4 javascript salesforce visualforce apex-code
这是我在Salesforce开发板上询问的一个问题的扩展:
我有一个VisualForce页面,需要经常更改从控制器加载新信息并将该信息嵌入到Javascript数组中以供进一步使用.
Curent解决方案:我已经成功使用了VisualForce'浏览器技术',如此处所述(在Wiki中):http://wiki.developerforce.com/index.php/Using_Browser_Technologies_in_Visualforce_-_Part_1
我用推荐的标签包围Javascript array.push:
<apex:repeat value="{!Object}" var="objects">
d.push( {
element1: "{!objects.id}"
})
</apex:repeat>
Run Code Online (Sandbox Code Playgroud)
问题:当整个页面刷新填充时,阵列被正确填充,当我使用"下拉"修改对象上的过滤器(在控制器中)时,DOM被更新(我可以看到新信息被放置在页面上) )
然而,最终,Javascript数组不会改变它的值,除非我在整个页面上调用刷新,这会使部分刷新失败并且对用户来说是一种冲击.
这个"必要的帖子"问题以前不是问题,甚至在我更新DOM后直接调用包含此数组的Javascript函数时,Javascript数组也不会改变(所以我假设它已经加载了一次基于当页面最初回发并且无法更改时DOM上的内容.
思考?
如果要控制数组何时刷新,请将其包装在outputpanel中,并将其id放在rerender属性中,以使数据需要更新.在重新更新每个dom时,我不得不使用此方法重新附加一些自定义jQuery输入侦听器.
<apex:commandButton action="{!something}" rerender="scriptPanel"/>
<apex:outputPanel id="scriptPanel>
<script>
d = new Array();
<apex:repeat value="{!objects}" var="object">
d.push({
element1: "{!objects.id}"
});
</apex:repeat>
</script>
</apex:outputPanel>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7111 次 |
| 最近记录: |