2014-08-28 47 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();应该更好。