2013-06-03 4 views
0

Прежде всего, я использую платформу Play с scala.Доступ к значению с помощью javascript Play Framework/Scala

Я создаю график и с идентификатором узла Я хотел бы показать некоторую информацию на той же странице.

Для этого сначала мне нужно получить node.name, но по некоторым причинам @node.name функция не работает. При поиске я узнал, что это потому, что игра является серверной, а js - клиентской. Однако мне нужно как-то получить данные.

Я также не могу получить доступ к:

var html = "<h4>" + node.name + "</h4><b> connections:</b><ul><li>" 

Как я могу получить доступ к этому через представление?


Мой второй вопрос после достижения JS node.name, мне нужно, чтобы получить доступ к контроллеру и сделать то же самое действие еще раз, но на этот раз с новым node.name.


Просмотр Часть:

onClick: function(node) { 
    @node.name 
} 

ответ

2

1) Является ли этот код в контроллере? И есть ли переменная узла в области видимости? Если это так, это должен быть совершенно законный код, поскольку он будет оцениваться как чистая scala.

2) Тем не менее, шаблоны - это совсем другая история. Вероятно, вы знаете, что они анализируют все как обычный html, если не сбежать. Чтобы использовать переменную, вы должны привести его в рамки либо:

  • определения «конструктор» для шаблона в абсолютном начале файла:

    @(node : Node)

    ...

    @node.name // later in the file

См http://www.playframework.com/documentation/2.0/ScalaTemplates

  • или определить переменную внутри шаблона:

    @defining(Get.node.from.somewhere) { node =>

    @node.name 
    

    }

См Play! framework: define a variable in template?

Если вы сделали одно из двух, у вас не возникнет проблем с доступом к переменной node. Даже в скриптах. Но обратите внимание, что внешние скрипты не имеют доступа к тем же переменным. Поэтому очень часто использовать встроенные скрипты или импортировать его в качестве другого шаблона, если вам нужно получить доступ к переменной из JavaScript.

Редактировать: Я сделал суть шаблона, контроллер и маршруты файла: https://gist.github.com/Jegp/5732033

+0

1) этот код находится в моей странице просмотра и его JS. как я могу импортировать в качестве другого шаблона, а затем получить его? – Ducaz035

+0

Либо вы можете встраивать javascript в свой файл html-/template-файл игры или определять совершенно новый шаблон, который можно включить с помощью синтаксиса normal @. Это на самом деле также довольно хорошая практика, когда дело доходит до обслуживания веб-страницы, из-за некоторых магических материалов, связанных с HTTP-протоколом. Я был бы рад рассказать вам больше, если вам интересно. –

+0

Конечно, я хотел бы узнать okey, вот что я сделал до сих пор. main.scala page: @ helper.javascriptRouter ("jsRoutes") ( routes.javascript.SupertrackController.supertrack (id) ). --------------- контроллеры ------------- def javascriptRoutes = Действие {implicit request => Ok ( Routes.javascriptRouter ("jsRoutes") ( supertrack (id) ) ) .as ("text/javascript") } – Ducaz035

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