Mithril.js - getScript

时间:2016-02-29 16:19:50

标签: javascript mithril.js

我正在尝试向某个div添加组件Eshop_pane“。组件Eshop_panel在另一个外部脚本中,因此我将此部分脚本添加到$.getScript,但此组件赢了” t出现。你能帮助我吗?

m("div.fr", [
    m("div", {class: ctrl.uid}),
    $.getScript("some_panel.js").done(function(script) {
       m.component(Eshop_panel, {})
    })
])

//some_panel.js
var Eshop_panel = {
    view: function() {
        return [
            m("div", "Hello world!"),
        ]
    }
};

1 个答案:

答案 0 :(得分:0)

一种选择是在实际执行任何相关代码之前加载脚本,例如:

$.getScript("some_panel.js").done(function(script) {
  m.mount(someElem, { // Ie, don't actually do the mount until everything's ready
    view: function() {
      return m("div.fr", [
        m("div", {class: ctrl.uid}),
         m.component(window.Eshop_panel, {})
        })
      ])
    }
  })
})

或者另一个选项可能是在脚本加载之前显示占位符:

$.getScript("some_panel.js").done(function(script) {
  m.redraw()    
})
...
m("div.fr", [
    m("div", {class: ctrl.uid}),
    typeof window.Eshop_panel === 'undefined' ? 'Loading...' : m.component(Eshop_panel, {})
])

(我建议考虑调查AMD或Browserify等工具来帮助解决这种情况。即我不会这样做,但这可能是最简单的选择你正在努力实现。)