2017-05-11 17 views
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が簡単に学べるからです。その理由を私が問題を理解したいのです。

答えて

関連する問題