2013-03-20 8 views
9

क्या ऐसा करने का कोई आसान तरीका है?स्कैला सूची को जावास्क्रिप्ट सरणी में कैसे परिवर्तित करें?

var jsArray = new Array(@scalaList.map(x => "\"" + x + "\"").mkString(",")); 

या आप की तरह

var jaArray = [ var jsArray = [@scalaList.map(x => "\"" + x + "\"").mkString(",")]; 

इसके अलावा if जांच की आवश्यकता नहीं है एक शाब्दिक उपयोग कर सकते हैं:

$(document).ready(function() { 
     var jsArray = [] 
     @if(scalaList != null) { 
      @for(id <- scalaList) { 
      jsArray.push('@id'); 
      } 
     } 
    ... 
    } 

उत्तर

2

आप की तरह कुछ कोशिश की है। For समझें स्मार्ट हैं

$(document).ready(function() { 
    var jsArray = [@scalaList.map(x => "\"" + x + "\"").mkString(",")]; 
    ... 
} 
3

आप इसके लिए mkString का उपयोग कर सकते हैं।

$(document).ready(function() { 
    var jsArray = @if(scalaList != null) { 
     [ @scalaList.mkString(",") ]} 
    else {[]}; 
    } 

यदि आप कथन में देखते हैं तो आपको इसे छोड़ देना चाहिए। इस के बजाय, नियंत्रक में अशक्त की जाँच करें और देखने के लिए खाली सूची में डाल दिया है, इसलिए इस कोड को देखने

$(document).ready(function() { 
    var jsArray = [ @scalaList.mkString(",") ]; 
} 

आप इस उद्धरण 'आईडी चारों ओर की जरूरत नहीं है में और अधिक सरल हो सकता है। जावास्क्रिप्ट 1 == '1' सच है

2

मुझे लगता है कि हर उत्तर अच्छा है लेकिन अभी भी सुरक्षित नहीं है क्योंकि प्रत्येक उत्तर 'या "सहित मूल्य के बारे में परवाह नहीं करता है। सौभाग्य से फ्रेमवर्क समर्थन जेसन खेलें, तो आपको जेसन का उपयोग करना चाहिए । जावास्क्रिप्ट सरणी में बदलने के लिए

@(json: String) 
<html> 
<head> 
</head> 
<body> 
<script> 
var json = @Html(json); 
var list = json.list; 
</script> 
</body> 
</html> 
package controllers 

import play.api._ 
import play.api.libs.json._ 
import play.api.mvc._ 

object Application extends Controller { 

    def index = Action { 
    val list = List("hoge\"hoge", "moge'mo\"ge") 
    val json = Json.stringify(Json.obj( 
     "list" -> JsArray(list.map(JsString(_))) 
    )) 
    Ok(views.html.index(json)) 
    } 

} 
7

यह निम्नलिखित के रूप में के रूप में सरल है:

import play.api.libs.json.Json 

val jsArr: JsValue = Json.toJson(scalaList) 

तुम भी ऐसा कर सकते हैं एक टेम्पलेट के भीतर:

@(list: List[Any]) 

@import play.api.libs.json.Json 

<script type="text/javascript"> 
    $(document).ready(function() { 
     var jsArr = @Json.toJson(list); 
     console.log(jsArr); 
    }); 
</script> 
+0

मुझे इस तरह का आउटपुट मिलता है: var jsArr = [" xxxx ", " yyyy "]; वास्तविक उद्धरण के बजाय। – binshi

+1

यह @Html होना चाहिए (Json.stringify (Json.toJson (सूची))) – Ikrom

संबंधित मुद्दे