秘银:不能用m.render进行m.redraw

时间:2017-09-14 09:36:49

标签: mithril.js

我有一个应用程序,我想控制何时重绘视图。

我可以使用m.mountm.redraw

使其有效



var count = 0;

var Counter = {
    view: function() {
        return m('main', [
            m('h1', ('Count: ' + count))
        ])
    }
}

m.mount(document.body, Counter);

window.setInterval(function () {
    count++;
    m.redraw();
}, 200);

<html>
<body>
    <script src="https://unpkg.com/mithril/mithril.js"></script>
    <script src="index.js"></script>
</body>
</html>
&#13;
&#13;
&#13;

但如果我使用m.render(因为我不需要秘密来自动编辑),它就不再适用了:

&#13;
&#13;
var count = 0;

var Counter = {
    view: function() {
        return m('main', [
            m('h1', ('Count: ' + count))
        ])
    }
}

m.render(document.body, m(Counter)); // <-- The only changed line

window.setInterval(function () {
    count++;
    m.redraw();
}, 200);
&#13;
<html>
<body>
    <script src="https://unpkg.com/mithril/mithril.js"></script>
    <script src="index.js"></script>
</body>
</html>
&#13;
&#13;
&#13;

使用m.render代替m.mount时,如何重绘秘银?

1 个答案:

答案 0 :(得分:2)

如同在秘银文档中所述here

  

请注意m.redraw仅在您使用m.mountm.route时有效。如果您通过m.render呈现,则应使用m.render重绘。

&#13;
&#13;
var count = 0;

var Counter = {
    view: function() {
        return m('main', [
            m('h1', ('Count: ' + count))
        ])
    }
}

m.render(document.body, m(Counter));

window.setInterval(function () {
    count++;
    m.render(document.body, m(Counter)); // <-- Use m.render here, not m.redraw
}, 200);
&#13;
<html>
<body>
    <script src="https://unpkg.com/mithril/mithril.js"></script>
    <script src="index.js"></script>
</body>
</html>
&#13;
&#13;
&#13;