2012-09-13 32 views
6

所以我正在使用jquery.flot和jquery.flot.selection,因爲define({...加載模塊異步我有一個問題,因爲選擇插件試圖將自己推入$ .plot.plugins(它是由jquery.flot創建的),但是在那一刻$ .plot.plugins仍然沒有被定義。需要填充設置 - jquery.flot/jquery.flot.selection

我發現「shim」參數在require應的.config幫我這,但我有沒有運氣... 所以這裏的破敗...... jquery.flot創建$ .plot 和jquery.flot.selection增加本身$ .plot.plugins

我試過了...

shim:{ 
    'js/lib/jquery.flot':{ 
     exports:'$.plot' 
    }, 
    'js/lib/jquery.flot.selection':{ 
     deps:['js/lib/jquery.flot'] 
    } 
} 

shim:{ 
    'js/lib/jquery.flot.selection':['js/lib/jquery.flot'] 
} 

我的插件看起來像這樣..

define(['jquery','lib/jquery.flot','lib/jquery.flot.selection'], function() { 
(function($) { 
    // jQuery plugin definition 
..... 

我也試過

define(['jquery'],function(){ 
require[('js/lib/jquery.flot.selection'],function(){ 
//jQuery plugin definition 
... 

,我應該怎麼辦???

+1

事實證明我使用的是RequireJs 1.0.4,所以我不能依靠墊片......我該怎麼辦? – Joe

+0

Shim受Use.js啓發,它是1.x的插件 - http://tbranyen.com/post/amdrequirejs-shim-plugin-for-loading-incompatible-javascript –

+0

太棒了!所以我把它添加到我的插件「define([」jquery「,」lib/jquery.flot「,」lib/use!lib/jquery.flot.selection「],」 ,這對我的本地要求「 路徑: { ... 使用:'../../../../otherDirec/src/main/webapp/js/lib/use' }, 使用:{ 「../../ ../../ otherDirec/src/main/webapp/js/lib/jquery.flot.selection「:{」use!../../../../ otherDirec/src/main /webapp/js/lib/jquery.flot「] } }」 我仍然收到一個錯誤:Module'lib/jquery.flot.selection'未定義或沒有'use'配置。請確保它存在,添加'使用'配置,或者不要使用!! – Joe

回答

5

對於任何碰巧遇到這種情況的人來說,RequireJS在診斷問題時可能會有點不透明。 Here's使用jquery.flot和jquery.flot.selection的RequireJS 2的一個工作示例,沒有使用模塊。

有點難以分辨這個例子和上面的問題有什麼不同,因此是不透明的!

require.config({ 
    shim: { 
     'jquery': { 
      exports: '$' 
     }, 
      'jquery.flot': { 
      deps: ['jquery'], 
      exports: '$.plot' 
     }, 
      'jquery.flot.selection': { 
      deps: ['jquery.flot'] 
     } 
    }, 
    paths: { 
     'jquery': '//cdnjs.cloudflare.com/ajax/libs/jquery/2.0.3/jquery.min', 
      'jquery.flot': '//cdnjs.cloudflare.com/ajax/libs/flot/0.8.1/jquery.flot.min', 
      'jquery.flot.selection': 'https://raw.github.com/flot/flot/master/jquery.flot.selection' 
    } 
}); 

require(['jquery', 'jquery.flot', 'jquery.flot.selection'], function ($) { 
    // jQuery plugin definition 
    console.log($.plot); 
    $('#x').text($.plot.plugins); 
});