当我使用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) { %>
变量,以便新交易在中显示循环吗?
答案 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>`;