У меня проблема, несмотря на то, что, несмотря на обновление списка, ngRepeat не отображает информацию.ngRepeat не обновляется, хотя список
В приведенном ниже коде добавляется массив $scope.selectedImages
, когда изображения выбраны с использованием ввода файла. Он настроен так, что в список selectedImages будут добавлены только уникальные файлы (без дубликатов).
В конце функции scope.selectedImages
печатает массив с новыми значениями, но в представлении ngRepeat не добавляет новые элементы списка с именами изображений.
Другие вопросы, касающиеся этой проблемы, говорят о том, что $scope.$apply
должен решить проблему, но для меня это не так. Я использую это неправильно или есть что-то еще, что я недопонимаю.
EDIT: Просмотр 1 и View 2 в отдельных HTML-страниц, и опирающихся на том же контроллере.
Вид 1:
<input type="file" multiple accept="image/*" class="file-input" id="img-upload-btn" onchange="angular.element(this).scope().select(this)">
<md-button class="md-primary md-raised sidenav-btn" ng-click="proxy('img-upload-btn')">
Select <strong>Images</strong>
</md-button>
Функция прокси позволяет md-button
нажать ввод.
Вид 2:
<div layout-padding flex ng-controller="upload-controller">
<ul>
<li ng-repeat="im in selectedImages">{{im.name}}</li>
</ul>
</div>
Контроллер:
$scope.selectedImages = [];
$scope.select = function(element) {
$scope.$apply(function(scope) {
var justFiles = $.map(element.files, function(val, key) {
return val;
}, true);
var fileEquality = function(f1, f2) {
if (f1.name != f2.name) return false;
if (f1.size != f2.size) return false;
if (f1.type != f2.type) return false;
if (f1.lastModified != f2.lastModified) return false;
return true;
}
// inefficient, find better way later
for (i in justFiles) {
var contains = false;
var file = justFiles[i];
for (i in scope.selectedImages) {
if (fileEquality(file, scope.selectedImages[i])) {
contains = true;
break;
}
}
if (!contains) scope.selectedImages.push(file);
}
console.log(scope.selectedImages);
});
};
У вас не было $ scope.uploadedImages в вашем контроллере! эта модель пуста! –
@HanArantes Упс! Я скопировал более старую версию этого кода. Даже с помощью selectedImages возникает проблема, и ничего не отображается. Я редактировал новый код. –