1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

PlayFramework テンプレートによる共通化メモ(都度更新)

1
Last updated at Posted at 2016-08-10

 

テンプレートがあるのに、似たような処理をコピペで作るのはスマートではない。

グローバル変数

@(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 _ => {}
}
1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?