1

私はミスリルが初めてで、この問題に頭を悩ませようとしています。

DOM 要素を作成し、onClick メソッドが宣言されているビューがあります。残念ながら、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')
4

2 に答える 2

2

Mithril が機能する方法は、仮想 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
}})
于 2014-08-29T13:13:15.150 に答える