2013-09-16 104 views
0

我遇到一些奇怪的問題。我有這個無法獲取方法requireJS

require({ 
    paths: { 
     'template': 'tmpl.min', 
     'videoupload.widget': 'jquery.ui.videoupload' 
    } 
}, ['js/main_video.js'], function(App) { 
    App.initial_video_upload(); 
}); 

define(['template','videoupload.widget'],function() { 
     function initial_video_upload(){ 
      'use strict'; 
      $('#videoupload').videoupload({ 
       //...some code 
      }); 
     } 
     return{ 
      initial_video_upload: initial_video_upload 
     } 
    } 
); 
文件 jquery.ui.videoupload.js

,我有一些調用它在tmpl.min.js定義的tmpl方法,但我得到的消息

Uncaught TypeError: Object [object Object] has no method 'tmpl' 

回答

0

這裏有兩個問題:

  1. 您的第一個片段是將配置選項傳遞給require函數。 require,是一種加載依賴關係並使用它們執行一些代碼的方法。如果你想通過配置選項來require.js,requirejs.config是你想要什麼:

    // configurations to be used in your module definitions 
    requirejs.config({ 
        paths: { 
         'template': 'tmpl.min', 
         'videoupload.widget': 'jquery.ui.videoupload' 
        } 
    }); 
    
    // load your main module and kick things off 
    require(['js/main_video.js'], function(App) { 
        App.initial_video_upload(); 
    });) 
    
  2. 你的第二個片段被宣告依賴關係,但沒有將它們傳遞到回調:

    define(['template','videoupload.widget'], 
    // these are now accessible within the function's scope: 
    function(template, videoupload.widget) { 
         function initial_video_upload(){ 
          'use strict'; 
          $('#videoupload').videoupload({ 
           //...some code 
          }); 
         } 
         return{ 
          initial_video_upload: initial_video_upload 
         } 
        } 
    ); 
    

此外,我假設jQuery是您的videoupload.widget的依賴項。你是如何加載的?您可能需要額外的「中間層」的配置添加到您的requirejs.config:

requirejs.config({ 
    paths: { 
     'template': 'tmpl.min', 
     'videoupload.widget': 'jquery.ui.videoupload' 
    }, 
    shim: { 
     "videoupload.widdget": ["jquery"] 
    } 
}); 
+0

仍然得到同樣的錯誤更新到'函數(模板,videoupload.widget)後'...順便說一句,'jQuery'是由文件頂部的'require(['js/lib/jquery/jquery.min.js'])'加載' – user1611830

+0

我認爲你的文件結構可能有問題,你能否發佈它(或更多摘錄,如果它太大)。通常,您應該使用每個文件一個需求。 –

+0

再次嗨:我還在遇到麻煩。事實上,Iget兩個連續的消息:'Uncaught TypeError:Object [object Object]沒有方法'tmpl'',然後'Uncaught Error:模塊加載超時:tmpl'。你有好主意嗎 ? – user1611830