2016-09-24 5 views
1

スライドアニメーションを行うjqueryフレックスライダーがあります。しかし、問題は、DOMがロードされる前にライブラリがロードされているため、flexsliderのアクションをトリガできないことです。ライブラリーの外部ライブラリーをロード

HTML:

.directive('flexslider', function() { 
    return { 
     link: function (scope, element, attrs) { 
      element.flexslider({ 
       animation: "slide", 
      }); 
     } 
    } 
}) 

しかし、私はriotjsで同じことをどのように修正すればよい:角度で

<html> 
    <body> 
     <home-template></home-template> 
     <script src="./views/home-template.html" type=riot/tag></script> 
     <script src="bower_components/riot/riot+compiler.min.js" type="text/javascript"></script> 
     <script src="assets/js/vendor/jquery-1.11.2.min.js"></script> 
     <script src="assets/js/jquery.flexslider-min.js"></script> 

     <script> 
      riot.mount('*'); 

      /***************** Flex Slider ******************/ 

      $('#courses-slider').flexslider({ 
       animation: "slide", 
       prevText: "", 
       nextText: "", 
       itemWidth: 292, 
       itemMargin: 0, 
       move: 1 
      }); // Courses Slider 
     </script> 
    </body> 
</html> 

は、私は以下のようにそれを修正しましたか?

暴動コード:

<header-template></header-template> 
<home-template></home-template> 
<footer-template></footer-template> 

<script> 
     var SharedMixin = { 
      observable: riot.observable() 
     }; 
     //creating a data mixin so all tags can access data 

     var self = this; 
     var DataMixin = { 
      data: { 
       "status": "Init" 
      }, 
      state: "home", 
     } 
     function goTo(path) { 
      if (path === 'home') { 
       console.log(path); 
       riot.mount('home-template', {class: 'loader'}); 
       DataMixin.state = "home"; 
       riot.update(); 

      } else if (path === 'about') { 
       riot.mount('home-template'); 
       DataMixin.state = "about"; 
       riot.update(); 

      } else if (path === 'instructors') { 
       riot.mount('instructors-template'); 
       DataMixin.state = "instructors"; 
       riot.update(); 

      } else if (path === 'contact') { 
       riot.mount('contact-template'); 
       DataMixin.state = "contact"; 
       riot.update(); 
      } else { 
       console.log("error"); 
      } 
     } 

     riot.compile(function() { 
      // here tags are compiled and riot.mount works synchronously 
      //var tags = riot.mount('*') 
      //riot.route.exec(goTo); 
      header = riot.mount("header-template"); 
      footer = riot.mount("footer-template"); 
      riot.route(goTo); 
      riot.route.start(true); 
     }); 

     riot.mixin(DataMixin); 
    </script> 

答えて

0

DOMが使用可能になったとき、それがマウント上に呼ばれていますように、あなたは、あなたの暴動タグ内にごflexsliderプラグインを呼び出すことができます。

<example-tag> 
    <p id="courses-slider">Est-ce que j'existe ?</p> 

    <script> 
    this.on('mount', function(){ 

     $('#courses-slider').flexslider({ 
      animation: "slide", 
      prevText: "", 
      nextText: "", 
      itemWidth: 292, 
      itemMargin: 0, 
      move: 1 
     }); // Courses Slider 

    }); 
    </script> 
</example-tag> 

http://riotjs.com/fr/guide/#montage

+0

を参照してください、私が持っています – Satyadev

+0

が動作しなかった 'mount'と' updated'ですでに試したことが、これは大きなsetTimeoutでも動作していますか? – Gatsbill

+0

タイムアウトが呼び出されていますが、それでも問題は解決されていません。 – Satyadev

関連する問題