我正在尝试向某个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!"),
]
}
};
答案 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等工具来帮助解决这种情况。即我不会这样做,但这可能是最简单的选择你正在努力实现。)