说明
我试图将JSON对象初始化为我的javascript模板。
查看:views.tasks.task.js
@()
@import play.libs.Json
@import enums.TaskType
...
var taskTypes = @Html(@Json.stringify(TaskType.valuesJson()));
型号:TaskType
public enum TaskType {
@EnumValue("General")
GENERAL(1, "General", "label-info", "item-blue");
...
public static JsonNode valuesJson() {
ArrayNode arr = Json.newObject().arrayNode();
for(TaskType tt: values()){
arr.add(tt.jsonNode());
}
return arr;
}
结果:
taskTypes = [{\"value\":\"General\",\"label\":\"label-info\",\"itemColor\":\"item-blue\"}];
预期:
taskTypes = [{"value":"General","label":"label-info","itemColor":"item-blue"}];
问题:如何在不逃避的情况下执行此操作?为什么 @Html(...)无效?
答案 0 :(得分:2)
<强>解决方案:强> @JavaScript(Json.stringify(TaskType.valuesJson()));
<强>说明:强> Play为文件&#34; *。js&#34;使用JavaScript模板格式,因此您需要使用@JavaScript而不是@Html。在了解了模板引擎的工作原理后,它很清楚......
<强>来源:强>