テンプレートがあるのに、似たような処理をコピペで作るのはスマートではない。
グローバル変数
@(defName: String){global: Html}
@*
global には global変数を渡す
*@
<script>
@(global).@(defName) = {};
function test(){
@(global).@(defName).date = new Date();
}
</script>
呼び出す
<script>
var global = {};
</script>
@views.html.testtest("hoge"){global}
呼び出し元によってjsのfunction名を変えたい
インクルード時に引数渡してあげる。
@(defName:String)
@testName = @{"testtest"}
<script>
function funcname_@(defName) (){
console.log('funcname_@defName が呼ばれた');
}
</script>
呼び出す
@* インクルード *@
@views.html.testtest("nameX")
@views.html.testtest("XYZ")
<script>
funcname_nameX(); // funcname_nameX が呼ばれた
funcname_XYZ(); // funcname_XYZ が呼ばれた
</script>
テンプレート引数によって表示させたいモノを切り替える
○○type の値によって分岐させたい。
ifで記述
@(hogeType: String)
@isTypeA = @{(hogeType == "dog")}
@isTypeB = @{(hogeType == "fish")}
@isTypeC = @{(hogeType == "bird")}
@isTypeD = @{(!(isTypeA || isTypeB || isTypeC))}
@if(isTypeA){
}
@if(isTypeB){
}
@if(isTypeC){
}
@if(isTypeD){
}
matchで記述しても良いけどjsのswitch-caseと組み合わせたくないし、条件の再利用するとなった場合が面倒
@(hogeType: String)
@hogeType match{
case "dog" => {}
case "fish" => {}
case "bird" => {}
case _ => {}
}