Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/jenkins/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Websocket 在收到socket.on后更新Sails.js 0.10中的ejs视图_Websocket_Sails.js - Fatal编程技术网

Websocket 在收到socket.on后更新Sails.js 0.10中的ejs视图

Websocket 在收到socket.on后更新Sails.js 0.10中的ejs视图,websocket,sails.js,Websocket,Sails.js,我有一个带有索引操作的MenuItemController,它对mongodb数据库进行自定义查询,然后使用res.view{menuitems:menuitems}加载带有返回数据的视图EJB 现在的问题是,我想在创建新菜单项时实时更新ejs视图。我已经给MenuItem.subscribemenuitems打过电话了。Sails文档显示了如何订阅和接收WebSocket,但在所有示例中,它们最后只执行一个console.log,没有关于如何将数据传递到ejs模板的示例 我已经尝试过使用ang

我有一个带有索引操作的MenuItemController,它对mongodb数据库进行自定义查询,然后使用res.view{menuitems:menuitems}加载带有返回数据的视图EJB 现在的问题是,我想在创建新菜单项时实时更新ejs视图。我已经给MenuItem.subscribemenuitems打过电话了。Sails文档显示了如何订阅和接收WebSocket,但在所有示例中,它们最后只执行一个console.log,没有关于如何将数据传递到ejs模板的示例


我已经尝试过使用angular而不是ejs,但是在工作中遇到了各种各样的问题,所以我宁愿使用vanilla Sails.js。

您不能实时更改服务器渲染的.ejs视图,因为它们是在服务器上渲染的。这正是Angular等框架的用途。Sails通过禁止对套接字响应使用res.view来尽最大努力实现这一点,但如果您确实想这样做,您可以:

用于将视图渲染为字符串。 使用res.sendaWholeBunchOfHTML结束控制器操作 使用从套接字响应接收的HTML在客户端上重新呈现整个页面。 如果您正在使用任何类型的前端库,如jQuery,您将以这种方式丢失所有绑定,这是一种严重的带宽浪费,可能会使您的应用程序有点不实时


但重申一下,使用Sails无法仅更改已渲染视图的一部分。如果您在制作帆和角帆时遇到困难,我建议您查看视频和。

欢迎使用SO!为了帮助其他人回答您的问题,请提供一些代码,显示您迄今为止的尝试。经过几个小时的头痛之后,我终于能够参与到这个项目中。非常感谢。