3

jQuery file uploadを使用しようとしていますが、RequireJS 構成に行き詰まっています。依存関係を /ext/ フォルダーにインストールします。例:

/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 ディレクトリにあります。

私が間違っていることを誰かが知っていますか、またはjQueryファイルのアップロード用に動作するRequireJS構成を知っている人はいますか?

ありがとう、

マルティン

4

4 に答える 4

4

If you look at the jquery.fileupload.js file, at the top it declares its own dependencies

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

You need to edit your require.config path for the jquery.ui.widget item.

require.config({
    paths: {
        'jquery.ui.widget': 'your_path_here/jquery.ui.widget'
    }
}); 
于 2013-08-23T16:19:37.643 に答える
1

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"
]);
于 2013-08-21T23:08:53.050 に答える
1

私が間違えなければ、あなたの問題はプラグイン - jquery-file-upload - がその依存関係を単独でロードしようとすることです。

問題は、JS のファイルパスが、ファイル自体ではなく、スクリプト ファイルをロードするページに対して相対的であることです (外部ファイル内の Javascript の相対パス)。これは、ファイルが指定されたパスではなくルートに対して相対的にロードされているように見える理由を説明しています。

この場合、おそらくプラグイン コードを少し操作して、requireJS と依存関係の読み込みに関する次の説明を参照する必要があります: How do I use requireJS and jQuery together? .

于 2013-08-13T08:53:14.973 に答える
0

この問題を抱えている他の人のために...これは私たちのために働いた設定です.それが誰かを助けることを願っています

パスの宣言

 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 を使用しているため、shim は必要ありませんが、何よりも先に 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 + '%'
                );
            }
        });
    }

これは基本的なアップロードの例です..

于 2013-10-14T09:16:31.653 に答える