【发布时间】:2019-01-17 11:17:03
【问题描述】:
在我的 Nodejs 站点中,我创建了一个 JSON 数组并将其发送到 angularJs 客户端。然后它显示为 [object, object]。由于这个原因,我使用 JSON.stringify 现在它在 angularJs 客户端中以一种奇怪的方式显示。
NodeJs 端的数组创建,
getAttachments = function () {
let attach = [];
workflowSession.files.forEach(file => {
if (file) {
const item = {
text: file.name,
link: workflowSession.metadata.portalBaseUrl + "api/files/" + workflowSession.workflowRef + "@"+ file.name
}
attach.push(item);
}
});
return attach;
};
当我将控制台日志放在 Nodejs 端时,它显示如下,
[ { text: 'sdee.png',
link: 'http://localhost:3000/api/files/kYnDsXjyFT@sdee.png' },
{ text: 'wes.png',
link: 'http://localhost:3000/api/files/kYnDsXjyFT@wes.png' }
]
但在 AngularJs 客户端中显示为 [object, object],因此我对上述数组创建方法进行了如下更改,
getAttachments = function () {
let attach = [];
workflowSession.files.forEach(file => {
if (file) {
const item = {
text: file.name,
link: workflowSession.metadata.portalBaseUrl + "api/files/" + workflowSession.workflowRef + "@"+ file.name
}
attach.push(item);
}
});
return JSON.stringify(attach);
};
然后NodeJs端显示console.log的数据如下,
[
{"text":"sdee.png","link":"http://localhost:3000/api/files/kYnDsXjyFT@sdee.png"}, {"text":"wes.png","link":"http://localhost:3000/api/files/kYnDsXjyFT@wes.png"}
]
但在 AngularJs 端显示如下,
[
{"text":"wes.png","link":"http://localhost:3000/api/files/saJiCDZPet@wes.png"},{"text":"ssdd.png","link":"http://localhost:3000/api/files/saJiCDZPet@ssdd.png"}
]
我想迭代这个数组,如下面的 HTML sn-p 所示,但由于格式问题,我不能这样做。 “action.links”是从 Nodejs 端创建的数组。
<md-menu-content>
<md-menu-item ng-repeat="item in action.links" ng-if="item.link">
<md-button href="{{item.link}}" target="_blank">
{{item.text}}
</md-button>
</md-menu-item>
</md-menu-content>
我做错了什么?
【问题讨论】:
-
你如何在 Angular 端记录这个?来自
console? -
阵列是如何传送到客户端的?你用什么来设置 HTTP 响应体?
-
另外,关于 Phil 的评论,你能在你的浏览器开发者工具网络面板中查看是如何准确收到响应的吗?这将有助于查明发生不需要的编码的位置(来自 Node 或来自 Angular)
-
第一个例子应该是函数式的;
[object, object]是控制台中的正确输出,具体取决于您的console.log的调用方式。 HTML 是否无法正确解析object? -
@manojb86 究竟是怎样的?你在用
res.json(getAttachments())吗?
标签: javascript angularjs json node.js mean-stack