2012-06-25 6 views
0

Используя новый API файлов HTML 5, я пытаюсь передать файлы, которые пользователь выбирает для шаблона (отображается с помощью jsRender). Вот HTML:HTML 5 FileList - jsRender

<!DOCTYPE html> 
<html> 
<head> 
    <script src="http://code.jquery.com/jquery.js"></script> 
    <script src="http://borismoore.github.com/jsrender/jsrender.js"></script> 
    <script> 
    $(function() { 
     $(':file').change(function() { 
     //$('#files-placeholder').html($('#files-template').render({ files: [ { name: 'Test 1' }, { name: 'Test 2' } ] })); 
     $('#files-placeholder').html($('#files-template').render({ files: this.files })); 
     }); 
    }); 
    </script> 
</head> 
<body> 
    <form> 
    <input name="files" type="file" multiple="multiple" /> 
    <script id="files-template" type="text/x-jsrender"> 
     <ul> 
     {{for files}} 
      <li>{{>name}}</li> 
     {{/for}} 
     </ul> 
    </script> 
    <div id="files-placeholder"></div> 
    </form> 
</body> 
</html> 

Однако он не работает должным образом. Для демонстрации, если вы попытаетесь отобразить шаблон с прокомментированной строкой, тогда он отлично работает.

Я был бы признателен, если бы кто-нибудь мог показать мне, что я делаю неправильно. Благодаря

+0

Вы получаете какую-либо ошибку? Что вы имеете в виду, не работая? – Esailija

+0

Я отображает список с одним элементом. Я отредактирую свой вопрос, чтобы вам было легче протестировать. – nfplee

+0

Сделайте [jsfiddle] (http://jsfiddle.net/), если возможно – Esailija

ответ

1

Кажется, что шаблонный движок работает для реальных массивов только не FileList s

Я установил его здесь http://jsfiddle.net/4m3YQ/5/

Преобразование в массив как это:

[].slice.call(this.files) 
+0

Спасибо, сработало удовольствие! – nfplee

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