1
我試圖放在一起組裝一個更大的頁面的嵌套組件。 使用臨時步驟來創建視圖看起來像是矯枉過正,但這只是將要放在一起的更多組件的一部分。除此之外,它還能很好地概述發生的情況。但是我沒有正確的解決錯誤。使用mithril.js嵌套組件
下面是一個代碼示例
var MyApp = {
controller: function() {
return {loaded: true}
},
view: function(ctrl) {
return //[ // remove comment for var1
m("button[type=button]", {onclick: function() {ctrl.loaded = false}})
, ctrl.loaded ? MyComponent : ""
//] // remove comment for var1
}
}
var MyComponent = {
controller: function() {
return {
onunload: function() {
console.log("unloaded!")
}
}
},
view: function() {
return m("h1", "My component")
}
}
var MainCompCtrl = function() {
var ctrl = this
ctrl.name = "test";
}
var MainCompView = function(ctrl, args) {
var partComp = m.component(MyApp);
var part_myComp = m(".row", [ m(".col-md-2", [partComp]) ]);
var part5 = m("[id='2']", {class : 'commandContainer'}, "2", [part_myComp]);
return part5;
};
// var1 working
//m.mount(document.body, MyApp)
// var2 not working
m.mount(document.body, m.component(
{controller : MainCompCtrl, view : MainCompView}));
這裏是與不工作變體VAR2一個小提琴: http://jsfiddle.net/1f7uauav/
的錯誤信息是:
TypeError: data is undefined
if (data.subtree === "retain") return cached;
要查看工作VAR1請刪除小提琴(第6,9,42行)和註釋第45和46行中的註釋。現在您可以看到所需的結果,但是這樣我就不能在其他組件中使用MyApp。
那麼,var2中的代碼有什麼問題?
感謝, 斯特凡
你道歉自己或者只是使用「Stefan」作爲簽名? :) – lllllll