2014-03-26 86 views
0

我是新來玩playframework和網絡編程,所以混合播放變量,javascript和html仍然有點讓我困惑。索引來自javascript變量的播放模板列表項目

對我而言,我有一個來自視圖控制器的對象列表alarms: List[Alarm],我想訪問列表中的一個項目,但是考慮到該項目的index來自javascript函數。這甚至有可能嗎?

我試過了下面的代碼,但是play的編譯器不明白@{alarms(index).Patient.name}中索引的值。有沒有辦法做到這一點?或者是不可能的,因爲列表對象只是在頁面創建過程中使用,並且它不能在以後以動態方式訪問javascript。

@(alarms: List[Alarm], alarmForm: Form[Alarm]) 

@import helper._ 

@main("Alarm list") { 

    <script id="showInfoScript" language="javascript" type="text/javascript"> 
    function showInfoFromAlarm(index) { 
     $("#patientName").text(@{alarms(index).Patient.name}); 
    }; 
    </script> 

回答

0

這是不可能的,作爲index值將在客戶端被解析並且生成響應HTML當要發送到客戶端的alarms值纔可用。

你應該做的是發送alarms().Patient.name下的值給客戶端,並從那裏使用JavaScript。

+0

Id實際上需要訪問javascript函數中的整個對象(及其子對象)。看起來標準的做法是發送一個json對象,但是當我試圖簡單地執行'@ Json.toJson(alarm)'時,我得到一個錯誤,那就是沒有序列化器,並且該id需要** 「爲此類型實現隱式寫入或格式」**。你偶然有什麼想法傳遞對象的最簡單方法是什麼? – Thomas

+0

是的,這是正常的,閱讀更多關於此主題[here](http://stackoverflow.com/questions/10488950/play2-does-not-find-my-implicit-reads-or-format-for-json) – Peter

+0

任何想法我怎麼能在java中做到這一點?我剛剛在scala中爲序列化找到了解決方案 – Thomas