2012-07-05 48 views
6

我想用一个填充程序加载JQuery-Ui,但是当我尝试加载它时,即使当我知道该路径是正确的时,JQueryUi也会保持超时。Require.js Shim用于加载JQuery UI和其他JQuery包

require.config({ 
paths: { 
    jQuery: 'libs/jquery-wrapper', 
    jQueryUi: 'libs/jquery-ui-min', 
    jQuerySelectmenu: 'libs/jquery.ui.selectmenu', 
    Underscore: 'libs/underscore-wrapper', 
    Backbone: 'libs/backbone-wrapper', 
}, 
shim: {'Backbone': { 
      //These script dependencies should be loaded before loading 
      //backbone.js 
      deps: ['Underscore', 'jQuery'], 
      //Once loaded, use the global 'Backbone' as the 
      //module value. 
      exports: 'Backbone' 
     }, 
     'jQueryUi': { 
      deps: ['jQuery'], 
     }, 
     'jQuerySelectmenu': { 
      deps: ['jQuery', 'jQueryUi'] 
     } 
    } 
}); 

require([ 
    'jQuery', 
    'Underscore', 
    'Backbone', 
    'jQueryUi', 
    'jQuerySelectmenu' 
], 
    function(App) { 
     require(['order!src/app'] 
    ,  function (App) { 
    App.initialize(); 
}); 
}); 
+0

您使用的是哪种浏览器? – theintersect 2012-09-08 01:08:34

+0

不知道这是否仍然是一个未解决的问题我没有真正测试任何要验证的内容,但我注意到在jQueryUI填充中的deps数组之后有一个额外的逗号。 我猜这会阻止JavaScript正常运行。 – CStroliaDavis 2012-09-27 20:56:53

+0

另一件事(这并不影响jquery-ui的加载成功),最外层的范围内的App变量(你不用它)是jQuery。 – 2012-10-04 09:00:01

回答

0

尝试使用此项目https://github.com/jrburke/jqueryui-amd您jQueryUI的转化为模块化版本。然后,你可以简单地使用它:

define(['jquery', 'jqueryui/tabs'], function($){ 
    $('#tabs').tabs();  
}); 

随着requirejs配置:

requirejs.config({ 
paths: { 
    'jqueryui': '/javascript-cdn/jqueryui/' //output form jqueryui-amd 
}, 
shim: { 
    'jquery': { 
     deps: [], 
     init: function(){ 
      return $; 
     } 
    },   
    'jqueryui': { 
     deps: ['jquery'] 
    } 
} 
}); 

我希望这有助于。