Загрузка файла с помощью KenoUI: укажите URL-адрес через атрибут data-

У нас есть много подобных загрузок файлов, но все они загружаются на разные URL-адреса с разными параметрами. И я пытаюсь свести к минимуму количество случайных javascript в нашем приложении MVC4. Поэтому я хотел бы указать URL-адрес сохранения в элементе загрузки кендо через параметр данных в html:

<input name="file" type="file" class="single-file-upload" data-saveurl="/some/path?entryId=2&productId=33" />

URL будет отличаться в каждом случае. Иногда у нас даже есть загрузка в таблицу, и url будет отличаться по параметру (т.е. productId будет другим).

Затем в javascript я пытаюсь это сделать:

<script>
    $(document).ready(function () {
        $(".single-file-upload").kendoUpload({
            multiple: false,
            async: {
                saveUrl: $(this).data('saveurl'),
                autoupload: false
            }
        });
    });
</script>

Но это, похоже, не работает: $(this).data('saveurl') параметр данных не подбирается.. или, скорее, $(this) не то, что я хотел бы, поэтому атрибут данных пуст, что дает пустое свойство saveUrl.

Идея Энди, как получить доступ к объекту, к которому применяется kendoUpload? Или какой-либо другой метод указания общего URL-адреса в элементе html?

p.s. При написании этого заметил, что это можно сделать с помощью MVVM, но это слишком много черной магии для простой вещи, и будет ли это работать со многими (50-100) загрузками на одной странице?


person trailmax    schedule 10.01.2014    source источник


Ответы (1)


Вы можете выполнить итерацию вручную, чтобы this был элементом DOM, на котором вы создаете виджет:

$(document).ready(function () {
    $(".single-file-upload").each(function () {
        $(this).kendoUpload({
            multiple: false,
            async: {
                saveUrl: $(this).data('saveurl'),
                autoUpload: false
            }
        });
    });
});
person Lars Höppner    schedule 10.01.2014