2016-12-23 66 views
0

我的问题是,当我将数据发送到车把模板是我的字符串数组转换为变量数组:把手转换成的变量字符串数组的数组

res.render('index', { 
    title: 'Express' , 
    chartT:"title", 
    lab:['test','test2','test3'], 
    dat:[1,3,5] 
}); 

模板代码:

<canvas id="myChart" width="400" height="400"></canvas> 
    <script> 
     var pollOptions = [{{{lab}}}]; 
     var pollData = [{{{dat}}}]; 
     createChart("mychart",pollOptions,pollData); 
    </script> 

而且在pollOptions我得到这个

var pollOptions = [test,test2,test3]; 

未捕获的ReferenceError问题:测试没有定义

我不知道为什么模板转换他们...

预先感谢您的帮助。

回答

1

HandleBars致力于HTML模板(不渲染一个JS变量) 你可以做这样的事情(不带把手):

var pollOptions = ["{{{lab}}}"]; 
var pollData = ["{{{dat}}}"]; 
+0

我用的把手为模板...如:

的{{title}}

从服务器传下来的数据,以便它可以显示给用户,但我还需要为图表提供数据(用于使代码更易读的变量) – elwindly

+0

是的,我知道。导致被捕获错误的原因是'handlebars'从变量中删除''',这意味着''''引擎会将它们视为您希望的JavaScript变量而不是'String'。 –

+0

好的,但是什么是解决方案,我可以强制下来的字符串,或者我应该做一个ajax调用服务器(到不同的路线),将数据提供给图表或注册助手或只是摆脱模板引擎并使用一些前端框架或库?上述解决方案即使使用html也不起作用。 – elwindly

0

好,我已经想通了!

var rawData = "{{{lab}}}"; 
var pollData = rawData.split(","); 

,现在我可以把它作为一个字符串数组