gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-03 22:35:43 25 4
gpt4 key购买 nike

我正在创建一个日期值数组并将其保存在 app.locals 中变量如下图:

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.chart1LabelsArray变量似乎被正确存储为数组。

现在,在我看来(或者更确切地说,在我 View 内的脚本标记中),如果我调用此变量,它似乎不会保留其数组格式。

  1. 对象的类型就是[Object object] .
  2. 我无法执行任何功能,例如 forEach
  3. 结果似乎也不是字符串,因为我无法运行 .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);

看来app.locals我在 <%= chart1LabelsArray %> 创建的变量正在被拉起,但不是作为数组。它们作为一组连续的值出现,似乎无法使用任何字符串或集合相关的函数来访问它们。

有人知道我错过了什么吗?

最佳答案

编辑我没有注意到你正在将模板化为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>

关于javascript - 在 View 中使用时,保存在 app.locals 中的值数组会丢失其数组格式。这里发生了什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29615536/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com