【问题标题】:Incrementing a VTL variable in JavaScript function在 javascript 函数中增加 VTL 变量
【发布时间】:2011-08-23 03:15:58
【问题描述】:
<script>    
    var count_security = 0;
    #set($count_security = 0)  

    function increment() {    
        count_security++;
        #set($count_security = $count_security + 1)
        alert(count_security);
        alert($count_security);    
    }
</script>

<html>
    <input type="button" onclick="increment" />
</html>

当我点击按钮调用上述函数时,“$count_security”变量只会增加一次。它不会进一步增加。

如果我做错了什么,请帮忙。 谢谢 拉加夫

【问题讨论】:

    标签: jquery javascript-events vtl


    【解决方案1】:

    这是因为您需要考虑两种情况

    • 渲染上下文(速度/VTL)
    • 执行上下文(浏览器/客户端)

    因此,当此渲染时,您将在 Velocity 引擎中执行 1 次执行,该引擎将执行增加 $count_security 的速度逻辑。这将作为文字值呈现到输出中。

    var count_security 是一个 JavaScript CLIENT 变量,可以由客户端更改和更新。

    您的速度 #set() 代码不会作为“集合”呈现到输出中。 #set 是一个 VTL 函数,不会改变输出流。

    我希望这是有道理的。

    【讨论】:

    • 或者有没有办法可以将 javascript 变量分配给速度变量??
    • 一旦页面通过速度上下文渲染,任何与该上下文相关的变量都会“蒸发”。从客户端的角度来看,上下文基本上是不存在的。如果您希望在栅栏的两侧维护 count_security,您将需要实现一些东西来为用户在会话中保留 count_security,并使用 AJAX 在会话中执行该变量的更新以保留它与客户端同步。虽然这听起来很困难,但完成起来却是一件微不足道的事情。
    猜你喜欢
    • 2021-07-08
    • 1970-01-01
    • 1970-01-01
    • 2015-03-03
    • 1970-01-01
    • 2013-01-16
    • 2020-05-31
    • 1970-01-01
    • 2013-10-12
    相关资源
    最近更新 更多