NVelocity 是服務端模板引擎,語法如 #if()、#foreach();JavaScript 是客服端腳本,也使用 if、for 關鍵字。在 .vm 文件中直接編寫 JS 邏輯會導致模板引擎誤解析或語法錯誤。
<script>
#foreach($row in $Data.testData)
#if($row.TestType == $selectedType)
n.options.add(new Option(...));
#end
#end
</script>
<script>
// 1. 後端將數據序列化為 JSON 注入頁面
var testData = $jsonTool.toJson($Data.testData); // 需在 Velocity 上下文放入 jsonTool
// 2. 純 JS 邏輯處理
function GetTestType() {
var selectedType = document.getElementById("testType").value;
var n = document.getElementById("testName");
n.innerHTML = ''; // 清空
testData.forEach(function(row) {
if (row.TestType == selectedType) {
n.options.add(new Option(row.TestName, row.Id));
}
});
}
</script>
若項目無 JSON 工具,可自定義 Velocity 宏輸出 JS 數組字面量,或改用現代前後端分離架構(API + Vue/React)。