2013-08-13 2 views
3

Я пытаюсь использовать jQuery file upload, но я застрял в конфигурации RequireJS. Мы устанавливаем нашу зависимость в/внутре/папке, например:Загрузка файла jQuery и настройка RequireJS

/src 
    /ext 
    /jquery-file-upload 

В моем main.js я использую следующие конфигурации:

require.config({ 
    paths: { 
     "ext/jquery-file-upload": "../ext/jquery-file-upload/js/jquery.fileupload" 
    } 
}); 
require([ 
    "ext/jquery-file-upload" 
]); 

Но RequireJS пытается загрузить jquery.ui.widget. js из корня вместо относительного файла. Он находится в каталоге jquery-file-upload.

Кто-нибудь знает, что я делаю неправильно, или кто-нибудь знает о рабочей конфигурации RequireJS для загрузки файла jQuery?

Спасибо,

Мартейн

ответ

1

Если я не ошибаюсь, ваша проблема в том, что ваш плагин - JQuery-файлы для загрузки - пытается загрузить его зависимость самого по себе.

Проблема в том, что пути к файлу в JS относятся к странице загрузки файла сценария, а не к самому файлу (Relative Paths in Javascript in an external file). Это объясняет, почему ваш файл, кажется, загружен относительно корня, а не данного пути.

В этом случае вам, вероятно, придется немного манипулировать кодом плагина и ознакомиться с приведенными здесь пояснениями относительно требований и зависимостей загрузки: How do I use requireJS and jQuery together?.

1

отображение Try jquery.widget.ui на правильный путь ...

require.config({ 
    paths: { 
     "ext/jquery-file-upload": "../ext/jquery-file-upload/js/jquery.fileupload" 
     "jquery.ui.widget": "../ext/jquery-file-upload/js/vendor/jquery.ui.widget" 
    } 
}); 
require([ 
    "ext/jquery-file-upload" 
]); 
4

Если вы посмотрите на jquery.fileupload.js файл, в верхней части он объявляет свои собственные зависимости

if (typeof define === 'function' && define.amd) { 
    // Register as an anonymous AMD module: 
    define([ 
     'jquery', 
     'jquery.ui.widget' 
    ], factory); 

Вам нужно отредактировать свой путь require.config для элемента jquery.ui.widget.

require.config({ 
    paths: { 
     'jquery.ui.widget': 'your_path_here/jquery.ui.widget' 
    } 
}); 
0

Для тех, кто еще с этой проблемой ... это конфиг, который работал на us.Hope это помогает кому-то

дорожкам декларации

paths: { 

     'jquery.ui.widget': '../../Scripts/FileUpload/jqueryui/jquery.ui.widget', 
     'jquery_iframe_transport': '../../Scripts/FileUpload/jquery.iframe-transport', 
     'jquery.fileupload': '../../Scripts/FileUpload/jquery.fileupload' 

    } 

Определить заявление

define(['jquery.ui.widget','jquery_iframe_transport','jquery.fileupload']) 

Вышеупомянутое зависит от загружаемого jquery. Мы используем Durandal поэтому не нужна прокладка, но вы должны убедиться, JQuery загружаются, прежде чем что-либо еще

инициализации в коде

function uploadFile() { 


     var url = '/Backload/UploadHandler'; 

     $('#fileupload').fileupload({ 
      url: url, 
      dataType: 'json', 
      done: function (e, data) { 
       $.each(data.result.files, function (index, file) { 
        $('<p/>').text(file.name).appendTo('#files'); 
       }); 
      }, 
      progressall: function (e, data) { 
       var progress = parseInt(data.loaded/data.total * 100, 10); 
       $('#progress .bar').css(
        'width', 
        progress + '%' 
       ); 
      } 
     }); 
    } 

Это основной пример загрузки ..

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