我有一個jQuery插件,它依賴於先加載的jQuery。我使用shim
和require([])
來確保jQuery首先被加載。 有時應用程序的工作原理,但通常它不會做,給我以下錯誤:RequireJS加載依賴不一致
Uncaught TypeError: Object [object Object] has no method 'noUiSlider'
...這是jQuery的指示不被第一次加載的。我究竟做錯了什麼?
這裏是我的應用程序的主腳本:
requirejs.config({
"baseUrl": "app/",
"paths": {
"app": "./app",
"threejs" : "../lib/three.min",
"jquery" : "../lib/jquery",
"jquery.nouislider.min": "../lib/jquery.nouislider.min"
},
"shim": {
"jquery.nouislider.min": {
deps: ["jquery"],
init: function($) {
return this;
}
}
}
});
require([
"jquery",
"jquery.nouislider.min",
"threejs",
"Scene"
],
function ($) {
var glScene = new Scene();
glScene.clockStart();
$(function(){
var slider = $("<div></div>");
slider.attr("id", "sample-minimal");
$("body").append(slider);
$("#sample-minimal").noUiSlider({
range: [0, 100]
,start: [20, 80]
,connect: true
});
});
function onWindowResize(event) {
glScene.windowResize();
}
});
問題不是jQuery根本不加載。問題是插件在jQuery加載之前加載。請記住,問題是間歇性的(即有時可行,有時不起作用)。 –
@josh查看更新的示例。這個工作得很好。 –
啊哈!看起來像'優先:['jquery]'做了詭計。謝謝! –