2016-03-30 14 views
1

私のランディングページを読み込もうとしていますが、custom.jsファイルに.vegas関数が読み込まれていません。 vegas関数はjquery.vegas.jsファイルに作成されます。これは問題だと思われるので、Railsアプリ内でアセットパイプラインでスクリプトを呼び出す順序を変更するにはどうすればよいですか? application.jsファイルでどのように呼び出されるかの順序を変更できますか?キャッチしていないタイプのエラー:.vegasは関数ではありません

.vegas機能

(function($){ 

// Preloader  
$(window).load(function() { 
    $('#status').fadeOut(); 
    $('#preloader').delay(350).fadeOut('slow'); 
    $('body').delay(350).css({'overflow':'visible'}); 
}); 

$(document).ready(function() { 

    // Image background 
    $.vegas({ 
     src:'assets/images/bg1.jpg' 
    }); 

    $.vegas('overlay', { 
     src:'assets/images/06.png' 
    }); 

    var countdown = $('.countdown-time'); 

    createTimeCicles(); 

    $(window).on('resize', windowSize); 

    function windowSize(){ 
     countdown.TimeCircles().destroy(); 
     createTimeCicles(); 
     countdown.on('webkitAnimationEnd mozAnimationEnd oAnimationEnd animationEnd', function() { 
      countdown.removeClass('animated bounceIn'); 
     }); 
    } 

Application.jsと呼ばれているCustom.jsファイルがどこラスベガス機能が存在ファイル

//= require jquery 
//= require jquery_ujs 
//= require turbolinks 
//= require_tree . 

Jquery.vegas.jsファイル(最下部)

(function($) { 
var $background = $("<img />").addClass("vegas-background"), $overlay =  $("<div />").addClass("vegas-overlay"), $loading = $("<div />").addClass("vegas-loading"), $current = $(), paused = null, backgrounds = [], step = 0, delay = 5e3, walk = function() {}, timer, 
methods = { 
    init: function(settings) { 
     var options = { 
      src: getBackground(), 
      align: "center", 
      valign: "center", 
      fade: 0, 
      loading: true, 
      load: function() {}, 
      complete: function() {} 
     }; 
     $.extend(options, $.vegas.defaults.background, settings); 
     if (options.loading) { 
      loading(); 
     } 
     var $new = $background.clone(); 
     $new.css({ 
      position: "fixed", 
      left: "0px", 
      top: "0px" 
     }).bind("load", function() { 
      if ($new == $current) { 
       return; 
      } 
      $(window).bind("load resize.vegas", function(e) { 
       resize($new, options); 
      }); 
      if ($current.is("img")) { 
       $current.stop(); 
       $new.hide().insertAfter($current).fadeIn(options.fade, function() { 
        $(".vegas-background").not(this).remove(); 
        $("body").trigger("vegascomplete", [ this, step - 1 ]); 
        options.complete.apply($new, [ step - 1 ]); 
       }); 
      } else { 
       $new.hide().prependTo("body").fadeIn(options.fade, function() { 
        $("body").trigger("vegascomplete", [ this, step - 1 ]); 
        options.complete.apply(this, [ step - 1 ]); 
       }); 
      } 
      $current = $new; 
      resize($current, options); 
      if (options.loading) { 
       loaded(); 
      } 
      $("body").trigger("vegasload", [ $current.get(0), step - 1 ]); 
      options.load.apply($current.get(0), [ step - 1 ]); 
      if (step) { 
       $("body").trigger("vegaswalk", [ $current.get(0), step - 1 ]); 
       options.walk.apply($current.get(0), [ step - 1 ]); 
      } 
     }).attr("src", options.src); 
     return $.vegas; 
    }, 
    destroy: function(what) { 
     if (!what || what == "background") { 
      $(".vegas-background, .vegas-loading").remove(); 
      $(window).unbind("*.vegas"); 
      $current = $(); 
     } 
     if (!what || what == "overlay") { 
      $(".vegas-overlay").remove(); 
     } 
     clearInterval(timer); 
     return $.vegas; 
    }, 
    overlay: function(settings) { 
     var options = { 
      src: null, 
      opacity: null 
     }; 
     $.extend(options, $.vegas.defaults.overlay, settings); 
     $overlay.remove(); 
     $overlay.css({ 
      margin: "0", 
      padding: "0", 
      position: "fixed", 
      left: "0px", 
      top: "0px", 
      width: "100%", 
      height: "100%" 
     }); 
     if (options.src === false) { 
      $overlay.css("backgroundImage", "none"); 
     } 
     if (options.src) { 
      $overlay.css("backgroundImage", "url(" + options.src + ")"); 
     } 
     if (options.opacity) { 
      $overlay.css("opacity", options.opacity); 
     } 
     $overlay.prependTo("body"); 
     return $.vegas; 
    }, 
    slideshow: function(settings, keepPause) { 
     var options = { 
      step: step, 
      delay: delay, 
      preload: false, 
      loading: true, 
      backgrounds: backgrounds, 
      walk: walk 
     }; 
     $.extend(options, $.vegas.defaults.slideshow, settings); 
     if (options.backgrounds != backgrounds) { 
      if (!settings.step) { 
       options.step = 0; 
      } 
      if (!settings.walk) { 
       options.walk = function() {}; 
      } 
      if (options.preload) { 
       $.vegas("preload", options.backgrounds); 
      } 
     } 
     backgrounds = options.backgrounds; 
     delay = options.delay; 
     step = options.step; 
     walk = options.walk; 
     clearInterval(timer); 
     if (!backgrounds.length) { 
      return $.vegas; 
     } 
     var doSlideshow = function() { 
      if (step < 0) { 
       step = backgrounds.length - 1; 
      } 
      if (step >= backgrounds.length || !backgrounds[step - 1]) { 
       step = 0; 
      } 
      var settings = backgrounds[step++]; 
      settings.walk = options.walk; 
      settings.loading = options.loading; 
      if (typeof settings.fade == "undefined") { 
       settings.fade = options.fade; 
      } 
      if (settings.fade > options.delay) { 
       settings.fade = options.delay; 
      } 
      $.vegas(settings); 
     }; 
     doSlideshow(); 
     if (!keepPause) { 
      paused = false; 
      $("body").trigger("vegasstart", [ $current.get(0), step - 1 ]); 
     } 
     if (!paused) { 
      timer = setInterval(doSlideshow, options.delay); 
     } 
     return $.vegas; 
    }, 
    next: function() { 
     var from = step; 
     if (step) { 
      $.vegas("slideshow", { 
       step: step 
      }, true); 
      $("body").trigger("vegasnext", [ $current.get(0), step - 1, from - 1 ]); 
     } 
     return $.vegas; 
    }, 
    previous: function() { 
     var from = step; 
     if (step) { 
      $.vegas("slideshow", { 
       step: step - 2 
      }, true); 
      $("body").trigger("vegasprevious", [ $current.get(0), step - 1, from - 1 ]); 
     } 
     return $.vegas; 
    }, 
    jump: function(s) { 
     var from = step; 
     if (step) { 
      $.vegas("slideshow", { 
       step: s 
      }, true); 
      $("body").trigger("vegasjump", [ $current.get(0), step - 1, from - 1 ]); 
     } 
     return $.vegas; 
    }, 
    stop: function() { 
     var from = step; 
     step = 0; 
     paused = null; 
     clearInterval(timer); 
     $("body").trigger("vegasstop", [ $current.get(0), from - 1 ]); 
     return $.vegas; 
    }, 
    pause: function() { 
     paused = true; 
     clearInterval(timer); 
     $("body").trigger("vegaspause", [ $current.get(0), step - 1 ]); 
     return $.vegas; 
    }, 
    get: function(what) { 
     if (what === null || what == "background") { 
      return $current.get(0); 
     } 
     if (what == "overlay") { 
      return $overlay.get(0); 
     } 
     if (what == "step") { 
      return step - 1; 
     } 
     if (what == "paused") { 
      return paused; 
     } 
    }, 
    preload: function(backgrounds) { 
     var cache = []; 
     for (var i in backgrounds) { 
      if (backgrounds[i].src) { 
       var cacheImage = document.createElement("img"); 
       cacheImage.src = backgrounds[i].src; 
       cache.push(cacheImage); 
      } 
     } 
     return $.vegas; 
    } 
}; 
function resize($img, settings) { 
    var options = { 
     align: "center", 
     valign: "center" 
    }; 
    $.extend(options, settings); 
    if ($img.height() === 0) { 
     $img.load(function() { 
      resize($(this), settings); 
     }); 
     return; 
    } 
    var vp = getViewportSize(), ww = vp.width, wh = vp.height, iw = $img.width(), ih = $img.height(), rw = wh/ww, ri = ih/iw, newWidth, newHeight, newLeft, newTop, properties; 
    if (rw > ri) { 
     newWidth = wh/ri; 
     newHeight = wh; 
    } else { 
     newWidth = ww; 
     newHeight = ww * ri; 
    } 
    properties = { 
     width: newWidth + "px", 
     height: newHeight + "px", 
     top: "auto", 
     bottom: "auto", 
     left: "auto", 
     right: "auto" 
    }; 
    if (!isNaN(parseInt(options.valign, 10))) { 
     properties.top = 0 - (newHeight - wh)/100 * parseInt(options.valign, 10) + "px"; 
    } else if (options.valign == "top") { 
     properties.top = 0; 
    } else if (options.valign == "bottom") { 
     properties.bottom = 0; 
    } else { 
     properties.top = (wh - newHeight)/2; 
    } 
    if (!isNaN(parseInt(options.align, 10))) { 
     properties.left = 0 - (newWidth - ww)/100 * parseInt(options.align, 10) + "px"; 
    } else if (options.align == "left") { 
     properties.left = 0; 
    } else if (options.align == "right") { 
     properties.right = 0; 
    } else { 
     properties.left = (ww - newWidth)/2; 
    } 
    $img.css(properties); 
} 
function loading() { 
    $loading.prependTo("body").fadeIn(); 
} 
function loaded() { 
    $loading.fadeOut("fast", function() { 
     $(this).remove(); 
    }); 
} 
function getBackground() { 
    if ($("body").css("backgroundImage")) { 
     return $("body").css("backgroundImage").replace(/url\("?(.*?)"?\)/i, "$1"); 
    } 
} 
function getViewportSize() { 
    var elmt = window, prop = "inner"; 
    if (!("innerWidth" in window)) { 
     elmt = document.documentElement || document.body; 
     prop = "client"; 
    } 
    return { 
     width: elmt[prop + "Width"], 
     height: elmt[prop + "Height"] 
    }; 
} 
$.vegas = function(method) { 
    if (methods[method]) { 
     return methods[method].apply(this, Array.prototype.slice.call(arguments, 1)); 
    } else if (typeof method === "object" || !method) { 
     return methods.init.apply(this, arguments); 
    } else { 
     $.error("Method " + method + " does not exist"); 
    } 
}; 
$.vegas.defaults = { 
    background: {}, 
    slideshow: {}, 
    overlay: {} 
}; 
})(jQuery); 
+0

実際にJavaScriptファイルがロードされていますか? – epascarello

+0

はい、custom.jsファイルがプリローダーセグメントを実行しています。 – SaintClaire33

+0

document.ready部分で.vegas関数の実行を開始しようとするとエラーが発生します。 – SaintClaire33

答えて

1

アセットはパイプラインでアルファベット順にコンパイルされます。だから、あなたが好きな順序でコンパイルするファイルの名前を変更する可能性がいずれか、または手動で選択するために、あなたのapplication.jsで

//= require_tree . 

を削除し、あなたの資産の全てを必要とすることができます。うまくいけばそれは少し助けてください。

+0

Bradが働いてくれてありがとう。これで、application.jsファイルの外観は次のようになります。 // jqueryが必要です // jquery_ujsが必要です //ターボリンクが必要です // jquery.veが必要です – SaintClaire33

関連する問題