2014-08-28 1 views
1

저는 미스릴을 처음 접하고이 문제를 해결하기 위해 노력하고 있습니다.miithril에서 라이트 박스를 실행할 수 없습니다.보기

DOM 요소를 만들고 onClick 메서드가 선언 된보기가 있습니다. 불행히도 lightbox를로드하려고해도 magnificPopup, jqueryui 대화 상자, fancybox 또는 사용자 이름과 같은 라이트 박스를 시작하려고하면 정의되지 않은 메서드가 호출됩니다.

미스릴에 문제가 있습니까? 여기

내 코드입니다 :

 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 (템플릿을 나타냅니다 즉 일반 자바 스크립트 데이터 구조)를 생성 한 다음 실제를 만들려면이 가상 DOM을 렌더링하는 것입니다 DOM 트리.

m()으로 전화를 걸면이 가상 DOM이 생성되므로 DOM 요소가 문서에 아직 존재하지 않습니다. 타사 라이브러리를 통합하기 위해, 그것은 config 속성 경유 할 수있는 올바른 방법은 config 기능이 렌더링 한 후 호출되는, 한마디로

(http://lhorie.github.io/mithril/mithril.html#accessing-the-real-dom-element 참조), 그리고 함께 인수로 요소를합니다 다른 라이프 사이클을 제어하는 ​​매개 변수

구문은 다음과 같습니다

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

그것은 $.colorbox();는 '주제'요소가 누락되었음을 될 수 있을까요?

$(this).colorbox();은 더 잘 작동합니다.

관련 문제