传递/路由包含函数原型的对象
我一直在与NodeJS,ExpressJS和AngularJS做一些工作。
我目前正在开发一个graphics绘制项目,需要在后端完成所有的处理,所以前端只显示结果。 这需要我将包含数据和函数原型的一些对象路由到前端。 到目前为止,我还没有碰到这最后一部分。 当我从前端调用$http.get
,并且我的路由以res.send(object)
响应时,在节点后端的console.log
,对象被打印完成,其原型函数完成,但是在我的浏览器中检索到的对象只打印数据/文本部分,完全抛弃所有的function。
请参阅下面的代码片段以获得要点:
sample backend ExpressJS routes code snippet
// let's create an object, function Person(first, last, age, eyecolor) { this.firstName = first; this.lastName = last; // a function prototype this.fooBar = function(){ return 'Yes'; } }; // open up a route app.get('/getObject', function(req, res){ var baby = new Person("John", "Doe"); console.log(baby) //this console logs the following, as expected: // Person { firstName: 'John', lastName: 'Doe', fooBar: [Function] } // respond with the entire object res.send(baby) });
sample front end AngularJS code snippet
$http.get('/getObject') .success(function(data){ console.log(data) // THIS, however, only console logs the data, and discards the function // Object {firstName: "John", lastName: "Doe"} }) .error(function(err){ console.log(err) });
这让我挠了脑袋,试图弄清楚问题是来自Express / Node,还是来自Angular的结尾,或者两者兼而有之? 我会很感激这方面的一些帮助,因为我真的很喜欢把整个对象(包括原型函数)传递到前端,用于一些最小的操作。 如果这是不可能的,至less指向一个合适的解决方法的方向:-)。 谢谢!
函数不可序列化。 出于这个原因,他们将被跳过,而不是通过HTTP调用发送。
从MDN的文档JSON.stringify()
:
如果
undefined
,则在转换过程中遇到函数或符号时,会将其省略(在对象中find该对象时)或检查为空(在数组中find时)。JSON.stringify
还可以在传递“纯”值(如JSON.stringify(function(){})
或JSON.stringify(undefined)
。
相反,只有在客户端传输数据并重新组合你的JS对象。
- 向本地主机请求远程服务器获取预检请求'Access-Control-Allow-Origin'
- 使用AngularJS ajax将数据发布到sails.js后端的API
- 在AngularJS应用程序中使用node_modules
- MEAN栈上login系统的体系结构?
- 如何通过callback后的服务传递内容到另一个服务控制器已被parsing?
- 刷新浏览器后,包含“hypen”的URL不会经过angular度$ routeProvider.when(),而直接请求服务器
- 是否可以将EJSvariables传递给Angular ng-repeatfilter?
- Node,Angular,Express和视图引擎
- AngularJS socket.IO引导模块只有一次