2013-09-16 3 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 который определен в tmpl.min.js, но я получаю сообщение

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 является зависимостью вашего видеоустройства. Как вы загружаете это? Вам может понадобиться добавить дополнительный «прокладку» в конфигурацию 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: Load timeout для модулей: tmpl'. У вас есть идея? – user1611830

Смежные вопросы