2015-05-21 41 views
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中的代碼有什麼問題?

感謝, 斯特凡

回答

1

問題解決了,在JavaScript絕不讓一回跟一個換行符是這樣的:

return //[ // remove comment for var1 
    m("button[type=button]", {onclick: function() {ctrl.loaded = false}}) 
    , ctrl.loaded ? MyComponent : "" 
    //] // remove comment for var1 

對不起,這個斯特凡

+2

你道歉自己或者只是使用「Stefan」作爲簽名? :) – lllllll