Сообщение от Shitbox2
|
А зачем?)
|
потому, что это удобно
По твоему, зачем в DOM есть метод addEventListener?
Сообщение от Shitbox2
|
Зачем делать очередь с отдельными методами добавления, доступа?
|
все просто: моя очередь не приватная - это свойство загрузчика, которое является массивом. С одной стороны это не безопасно, с другой, позволяет внедрить ее в аргуляр без проблем:
$scope.uploader = uploader;
где шаблон
<ul>
<li ng-repeat="item in uploader.queue">
</ul>
подробнее в
разметке
Методов доступа к ней не писал (предполагается использование стандартных способов работы с массивами). Есть метод добавления в очередь, удаления из нее (
методы загрузчика).
Метод
addToQueue нужен потому, что:
- перед добавлением в очередь, каждый элемент проходит фильтры (что позволяет валидировать очередь)
ссылка
- после добавления элемента[file|input] в очередь, он становится элементом очереди (
приобретает свое api), что позволяет писать разметку вида
<ul>
<li ng-repeat="item in uploader.queue">
<div>Name: {{ item.file.name }}</div>
<div>Size: {{ item.file.size }}</div>
<div>
Progress: {{ item.progress }}
<div class="item-progress-box">
<div class="item-progress" ng-style="{ 'width': item.progress + '%' }"></div>
</div>
</div>
<div>Uploaded: {{ item.isUploaded }}</div>
<div>
<a ng-href="#" ng-click="item.upload()" ng-hide="item.isUploaded" >upload</a>
<a ng-href="#" ng-click="item.remove()">delete</a>
</div>
</li>
</ul>
- вызываются события "afteraddingfile", "afteraddingall", "changedqueue". На примере события "afteraddingfile" покажу процесс кастомизации:
uploader.bind( 'afteraddingfile', function( event, item ) {
// здесь, например, можно менять свойства элемента очереди, такие как alias, url, headers ... etc
// можно дать команду на немедленную загрузку - item.upload()
// или удалить item.remove() и т.п.
});
- на этапе добавления в очередь убираются браузерные различия (xh2 & iframe):
item.upload();
uploader.uploadItem( [index|item] );
uploader.uploadAll( [index|item] );
- почему надо делать удаление через методы загрузчика - iframe transport (остаются скрытые инпуты, формы и фреймы)
возможно, сделаю очередь защищенным свойством и добавлю пару методов для феншуя, но особых проблем не вижу, если руки прямые