在app.locals中保存的值数组在使用时会丢失数组格式。 这里发生了什么?

我正在创build一个date值的数组,并将其保存在一个app.localsvariables中,如下所示:

 prepDataList.forEach(function(item){ var str = item.createdAtDate.toDateString(); //str = str.substring(4, 10); labelsArray.push(str); countsArray.push(item.radarCount); }); app.locals.chart1LabelsArray = labelsArray; app.locals.chart1CountsArray = countsArray; console.log("App locals labels array: ", app.locals.chart1LabelsArray); 

console.log()结果如下所示:

 App locals labels array: [ 'Thu Mar 26 2015', 'Fri Mar 27 2015', 'Sat Mar 28 2015', 'Sun Mar 29 2015', 'Mon Mar 30 2015' ] 

所以app.locals.chart1LabelsArrayvariables似乎被正确地存储为一个数组。

现在,在我看来(或者说我的视图中的一个脚本标签),如果我调用这个variables,它似乎并不保留它的数组格式。

  1. 对象的types只是[Object object]
  2. 我不能执行任何function,如forEach
  3. 结果似乎也不是一个string,因为我不能运行.split(','); 命令就可以了。

代码:

 console.log(<%= chart1LabelsArray %>); 

结果在这个错误:

 [Error] SyntaxError: Unexpected identifier 'Mar'. Expected ')' to end a argument list. (anonymous function) 

我也尝试了一个整数数组,似乎也困扰着同样的问题。

当我检查浏览器中的元素,对于上面的行,这里是我所看到的:

 console.log(Thu Mar 26 2015,Fri Mar 27 2015,Sat Mar 28 2015,Sun Mar 29 2015,Mon Mar 30 2015); 

所以看起来,我在<%= chart1LabelsArray %>创build的app.localsvariables被拉起来了,而不是数组。 它们是作为一组连续的值出现的,这些值似乎不能用任何string或集合相关函数访问。

任何人都知道我错过了什么?

编辑我没有注意到你是模板到JavaScript。 下面的段落不太相关。 所有你需要的是当你在数组中模板时调用JSON.stringify()


所有脚本必须在lodash标签内

 <%= for(var i=0; i<chart1LabelsArray.length; i++){ %> <span> label is <%= chart1LabelsArray[i] %></span> <% } %> 

PS,对于任何比静态数据列表更复杂的东西,我倾向于将所有数据传递给客户端JS,而不是在服务器端模板中操作DOM。 我特别不喜欢用每个请求的模板生成不同的脚本。

 <body data-labels="<%= JSON.stringify(chart1LabelsArray) %>" ng-app="chartApp"> </body> <script> var labels = JSON.parse($('body').data(labels)) </script>