播放:是否在视图中的变量更改时重新呈现页面?

时间:2016-05-09 21:24:43

标签: playframework playframework-2.0

播放这个页面的频率是多少?比如说我有条件跟随

@if(viewModel.record.isRunning) {
    <h5>
        <center><i>
            <div id="database"></div>
        </i></center>
    </h5>
 }

如果在某些时候viewModel.record.isRunning更改会重新呈现/刷新页面吗?到目前为止我的观察是,它没有更新页面(这对我来说是令人惊讶的)。如果这个观察结果是正确的(即我没有任何其他错误),那么有关如何进行重新渲染/更新的任何建议都会发生吗?

2 个答案:

答案 0 :(得分:4)

如果您可以解释为什么希望更新页面,这可能会有所帮助。浏览器向服务器发出页面请求。 Play接收该请求,呈现页面并将其发送到浏览器。然后浏览器呈现该页面。服务器上的任何状态更新都不会反映在浏览器中,除非浏览器再次提出要求。

如果您希望服务器端的更新立即反映在浏览器中,那么您需要设置从服务器到浏览器的某种形式的事件流,然后浏览器才能做出反应。这通常是使用WebSockets完成的,但它意味着在服务器端,您需要在每次更改时向浏览器WebSocket发送事件 - 您不能期望更改变量来触发它。然后,您必须在浏览器端实现一个接收这些事件的JavaScript应用程序,并相应地更新UI。

答案 1 :(得分:0)

除非您使用某种缓存,否则播放会逐次呈现视图 (完全在每个请求)。它可能是内置的Play缓存系统,也可能是一些持久层缓存,可以保持视图不变,但是在你的问题中无法猜测。