Sails.js-从套接字数据更新变量

时间:2018-10-06 16:13:32

标签: javascript node.js socket.io sails.js

当我使用Sails.js通过网络套接字接收新数据时,我正在尝试更新视图。

在我的控制器welcome.js中,我有:

module.exports = {
    fn: async function (inputs, exits) {
        var allDeals = await Deal.find({});
        return exits.success({deals:allDeals});
    }
};

在我看来welcome.ejs,我有:

<% _.each(deals, function (deal) { %>
    <div class="dealTitle"><%= deal.title %></div>
<% }) %>

并且此数据正确显示。

我已经设置了一个网络套接字,以监听welcome.page.js函数中mounted中添加的新交易:

mounted: async function() {
    io.socket.get('/feed/subscribe', function(data, jwr) {
      io.socket.on('new_entry', function(entry) {
        console.log(entry); 
      });
     });
},

一旦创建了新交易,由于控制台日志正确,交易会显示在控制台中。

我的问题如下:如何使用我当前console.logging的数据更新deals中的<% _.each(deals, function (deal) { %>变量,以便新交易在中显示循环吗?

1 个答案:

答案 0 :(得分:2)

ejs仅存在于服务器上,因此您无法访问它。但是,您可以将div包装在父对象中:

<div id="deals" >
 <% _.each(deals, function (deal) { %>
<div class="dealTitle"><%= deal.title %></div>
<% }) %>
</div>

然后,每当有新条目到达时,在交易div中添加一些html:

 document.getElementById("deals").innerHTML += `<div class="dealTitle">${entry.title}</div>`;