2014-08-28 90 views
1

我是Mithril的新手,試圖圍繞這個問題來解決我的問題。從miithril無法啓動燈箱查看

我有一個視圖,它創建一個DOM元素並聲明瞭一個onClick方法。不幸的是,當我嘗試啓動一個如magnificPopup,jqueryui對話框,fancybox或您命名它的lightbox時,即使Lightbox庫已加載,它也會調用未定義的方法。

這是Mithril的問題嗎?

這裏是我的代碼:

 m('a.view-link', { 
      onclick: function() { 

      $.colorbox(); // this fails 
      alert('here is the code'); // alerts do work 
      $('.view-link').css('border', '2px solid red'); // this works 

      // $('.white-popup').magnificPopup({ // this claims .magnificPopup is undefined 
      // type:'inline', 
      // midClick: true 
      // }); 

      //  $('#dialog').dialog('open'); //jqueryUI dialog claims that .dialog is undefined 

      }, 
     href: '#' 
     } , ' Show link in lightbox') 

回答

2

祕的工作方式是通過創建一個虛擬的DOM(即表示模板的純JavaScript的數據結構),然後使這個虛擬DOM營造真實DOM樹。

當您撥打m()時,您正在構建此虛擬DOM,因此此時DOM元素尚未存在於文檔中。爲了整合第三方庫,做到這一點是通過config屬性的正確方式(見http://lhorie.github.io/mithril/mithril.html#accessing-the-real-dom-element

簡而言之,該config函數被渲染後調用,它需要的元素作爲參數,隨着一些其他參數來幫助控制其生命週期。

的語法如下:

m("a.view-link", {config: function(el) { 
    $(el).colorbox() //initialize jquery plugin 
}}) 
0

也許這是$.colorbox();缺少「主題」元素?

$(this).colorbox();應該更好。