0
私はプレイフレームワークの新しい学習者です。私はPlay Framework Essentialsの本を読んでいるうちに、追加された項目を削除するcoffeescriptの例を試しましたが、ボタンが応答しないのに失敗しました。プレイフレームワークでcoffeescriptを使用する適切な方法は何ですか?
shop.coffee
require(['logic'], (Logic) ->
for deleteBtn in document.querySelectorAll('button.delete-item')
do (deleteBtn) -> Logic(deleteBtn,deleteBtn.dataset.id)
)
logic.coffee
define(['ui', 'routes'], (Ui,routes) ->
(node,id) ->
ui = Ui(node)
ui.forEachClick(() ->
xhr =new XMLHttpRequest()
route = routes.controllers.Items.delete(id)
xhr.open(route.method, route.url)
xhr.addEventListener('readystatechange', () ->
if xhr.readyState == XMLHttpRequest.DONE
if xhr.status == 200
ui.delete()
else
alert('Unable to delete the item!')
)
xhr.send()
)
)
ui.coffee
define(() ->
(node) ->
delete:() ->
li = node.parentNode
li.parentNode.removeChild(li)
forEachClick: (callback) ->
node.addEventListener('click', callback)
)
index.scala.html
<script type="text/javascript" src="@routes.Application.javascriptRoutes"></script>
<script src="@routes.Assets.at("javascripts/shop.js")"></script>
また、JavaScriptの逆ルーティングは重複を避けるために使用されます。
def javascriptRoutes = Action { implicit request =>
val javascriptR = JavaScriptReverseRouter("routes")(
routes.javascript.Items.delete
)
//I didnt figure out, something is wrong with coffeescript file...
Ok(JavaScript(
s"""
define(function() { $javascriptR; return routes })
"""
))
}
注:これはjavascriptの例で行っています。私が気づいているのは、coffeescriptが簡単に学べるからです。その理由を私が問題を理解したいのです。