首先,我想说我是网络开发的新手,所以我可能会使用错误的词汇。
我想从我的服务器发起一个操作,将数据库修改发送到客户端以更新视图。
我正在尝试尊重SPA(单页应用程序)模型,所以我的所有视图都是由mithriljs生成的。
我的数据库会有一些外部修改,在不刷新浏览器的情况下更新视图的最佳方法是什么?
我在服务器端使用playframework。
答案 0 :(得分:2)
使用Mithril与任何推技术一起使用非常简单。正如Anton所提到的,您可以创建一个简单的WebSocket连接并在函数中侦听数据。然后你处理它,更新你的数据模型,如果一切正常,只需拨打m.redraw即可完成。这样的事情:(使用https://www.websocket.org/echo.html处的示例)
// A simple model, an array of messages:
var messages = m.prop([]);
function onMessage(evt) {
var message = evt.data;
// Some validation, only strings allowed
if (typeof message === 'string' || message instanceof String) {
messages().push(message);
// All ok, redraw
m.redraw();
}
}
然后您的秘银视图将如下所示:
var WebSocketMessages = {
view: function() {
m("ul", messages().map(function(message) {
return m("li", message);
}))
}
}
并显示它:
m.mount(document.body, WebSocketMessages);