2016-09-24 40 views
1

我有jQuery的flexslider,它没有幻灯片动画。但问题是在加载DOM之前库正在加载,因此无法触发flexslider的操作。在riotjs中加载外部库

HTML:

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

在角度,我有固定它象下面这样:

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

但我怎么修复riotjs一样吗?

防暴代码:

<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

,你可以叫你flexslider插件的防暴标签内,因此它被称为上挂接时,DOM是可供选择:

<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

我有已经试过'mount'和'updated'哪个没有工作 – Satyadev

+0

这是甚至可以使用setTimeout吗?真的很奇怪它没有工作后挂载 – Gatsbill

+0

超时被调用,但问题仍然没有解决 – Satyadev