Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/406.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Can';t从miithril视图启动lightbox_Javascript_Mithril.js - Fatal编程技术网

Javascript Can';t从miithril视图启动lightbox

Javascript Can';t从miithril视图启动lightbox,javascript,mithril.js,Javascript,Mithril.js,我对米特里尔还不熟悉,我正试图对这个问题保持清醒的头脑 我有一个视图,它创建了一个DOM元素,并声明了一个onClick方法。不幸的是,当我尝试启动一个lightbox,比如放大弹出窗口、jqueryui对话框、fancybox或您指定的方法时,它调用了未定义的方法,即使lightbox库已加载 这是米特里尔的问题吗 这是我的密码: m('a.view-link', { onclick: function() { $.colorbox(

我对米特里尔还不熟悉,我正试图对这个问题保持清醒的头脑

我有一个视图,它创建了一个DOM元素,并声明了一个onClick方法。不幸的是,当我尝试启动一个lightbox,比如放大弹出窗口、jqueryui对话框、fancybox或您指定的方法时,它调用了未定义的方法,即使lightbox库已加载

这是米特里尔的问题吗

这是我的密码:

        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')

Mithril的工作方式是创建一个虚拟DOM(即表示模板的普通javascript数据结构),然后呈现这个虚拟DOM以创建一个真正的DOM树

当您调用
m()
时,您正在构建这个虚拟DOM,因此此时文档中还不存在DOM元素。为了集成第三方库,正确的方法是通过
config
属性(请参阅)

简而言之,
config
函数在呈现后被调用,它将元素作为参数,以及一些其他参数来帮助控制其生命周期

语法如下所示:

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

可能是
$.colorbox()缺少“主题”元素吗

$(this.colorbox()应该工作得更好