2017-01-24 2 views
0

У меня есть карта, объявленная в параметрах шаблона со следующим синтаксисомпринимая рамки воспроизведения объекта в яваскрипте переменной

@(formData : scala.collection.Map[String, scala.List[String]], previousData : scala.collection.Map[String,String], resultList: scala.List[String])(implicit flash: play.api.mvc.Flash) 

Я хочу, чтобы прочитать карту объект previousData и хочу сохранить его в переменном яваскрипте. Я действительно хочу установить значение в текстовое поле, извлекая значение из объекта карты. Я знаю, что я могу использовать document.getElementById в javascript для установки значения определенного текстового поля. Может ли кто-нибудь помочь? Если какой-либо другой способ возможен, пожалуйста, дайте мне знать. Я пробовал следующий метод, но он не работает.

function loadPreviousData() 
{ 
    if(@previousData != null) 
    { 
     var x = @{previousData.getOrElse("name",null)}; 
     alert("Name is " +x); 
    } 
} 

ответ

0

Я не нашел способ решить это напрямую, но есть метод, который работал для меня, и поэтому я делюсь.

Я использовал объект Json вместо Карты, чтобы справиться с этим. Необходимые данные в формате значения ключа были заполнены объектом JSON и переданы этот объект JSON в форме String с использованием метода toString().

Ok(views.html.serviceReplay.render(formData, resultList.toList, fetchFormDataInJson.toString,newFlash)) 

В разделе просмотра этот объект Json был получен как строка.

@(formData : scala.collection.Map[String, scala.List[String]], resultList: scala.List[String], previousPageData : String)(implicit flash: play.api.mvc.Flash) 

И, наконец, для получения в переменной в разделе вида использовалась следующая инструкция.

var previousDataInJson = JSON.parse('@previousPageData'.replace(/"/g, '"')); 

Это сработало для меня. Надеюсь, это поможет другим.

Кроме того, если мы хотим сделать это через объект Map, я нашел решение для этого.

Мне не удалось напрямую использовать @formData непосредственно в javascript-коде, но он работал в разделе HTML, поэтому я использовал в следующем сценарии.

<select name="service" id="service"> 
         <option value="">Select Service</option> 
         @for(serviceName <- formData.getOrElse("service",null)) { 
          <option value="@serviceName">@serviceName</option> 
         } 
        </select> 

Теперь значение было назначено на SERVICENAME, поэтому, это можно легко получить с помощью JQuery, используя следующий синтаксис.

var service = $("#service").val(); 
0

Да, вы можете использовать JQuery, который широко используется в наши дни. Скажем txtname это идентификатор вашего текстового поля, то вы можете сделать, как этот

$("#txtname").val(x); 

Здесь х является переменным, в которой вы извлекаете данные.

+0

Я уже пробовал это. Без игрового фреймворка он отлично работает. Но мне нужно это как рабочий модуль в игре. Там это не работает. –

+0

Во-первых, вам нужно преобразовать свой объект карты scala в json в javascript через этот var info = @ Html (Json.toJson (previousData.toMap)); затем переместите этот объект и установите значение в текстовое поле. –

Смежные вопросы