2

我正在 Visualforce 中创建一个类似 Google 的应用程序,用户在其中输入搜索词,单击搜索,结果显示在搜索框下方。作为其中的一部分,当用户单击 Search 时,会设置一个 actionStatus 以在搜索过程中显示“Loading...”:

<apex:commandButton value="Search" action="{!runQuery}" status="loading"/>

现在我正在尝试设置登录页面,它只是一个带有输入字段和搜索按钮的页面,用于初始搜索。在 Google 风格中,第一次搜索会将用户带到显示结果的页面,搜索框向上移动到顶部。

问题是我不知道如何在页面加载时调用 actionStatus。当用户点击一个按钮时这很容易,但是当从登录页面搜索时,会加载一个新页面然后执行搜索。目前我只是让控制器的构造函数检查参数,如果找到,runQuery()手动调用,但这只会延迟页面加载时间并且不会调用 actionStatus。

有任何想法吗?

4

2 回答 2

2

采用

<apex:actionFunction name="runQueryJS" action="{!runQuery}" status="loading" />

创建一个客户端调用点,然后在 body 的加载事件(或您要从中运行查询的任何其他位置)附加一个处理程序,该处理程序将调用runQueryJS()javascript 函数,该函数将执行 Ajax 调用以进行搜索。

于 2012-04-26T21:24:06.820 回答
1

添加 onLoad 事件调用不起作用,但将其放在页面的最后,就在结束apex:page标记之前,似乎。我不完全确定为什么,但它很干净并且可以完成工作。

<script>
    runQuery();
</script>
于 2012-04-30T20:25:07.883 回答