Mithril 1.1.7

3rd Party Integration

Integration with third party libraries or vanilla javascript code can be achieved via lifecycle methods.


var FullCalendar = {

    oncreate: function (vnode) {
            // put your initial options and callbacks here

        Object.assign(vnode.attrs.parentState, {fullCalendarEl: vnode.dom})

    // Consider that the lib will modify this parent element in the DOM (e.g. add dependent class attribute and values).
    // As long as you return the same view results here, mithril will not
    // overwrite the actual DOM because it's always comparing old and new VDOM
    // before applying DOM updates.
    view: function (vnode) {
        return m('div')

    onbeforeremove: function (vnode) {
        // Run any destroy / cleanup methods here.
        //E.g. $(vnode.state.fullCalendarEl).fullCalendar('destroy')

m.mount(document.body, {
    view: function (vnode) {
        return [
            m('h1', 'Calendar'),
            m(FullCalendar, {parentState: vnode.state}),
            m('button', {onclick: prev}, 'Mithril Button -'),
            m('button', {onclick: next}, 'Mithril Button +')


        function next() {

        function prev() {



Running example flems: FullCalendar

License: MIT. © Leo Horie.