从服务器更新视图(Mithriljs)(playframework)

时间:2016-04-15 09:06:35

标签: playframework mithril.js

首先,我想说我是网络开发的新手,所以我可能会使用错误的词汇。

我想从我的服务器发起一个操作,将数据库修改发送到客户端以更新视图。

我正在尝试尊重SPA(单页应用程序)模型,所以我的所有视图都是由mithriljs生成的。

我的数据库会有一些外部修改,在不刷新浏览器的情况下更新视图的最佳方法是什么?

我在服务器端使用playframework。

1 个答案:

答案 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);