У меня проблема, когда по форме в моем ng-controller
, похоже, не меняется свойства в контроллере, который, как я думал, будет. После некоторого чтения вокруг это кажется, что я не полностью знал о прототипном наследовании, но благодаря internet и SO я обновил свой код как таковой. Но, к сожалению, он все еще не работает, и я не могу понять, почему.Проблемы с угловым охватом
Вот мой HTML
<div ng-app="licenceApp" ng-controller="licenceController">
<div class="hover panel" ng-class="{switch : licenceFormVisible}">
<div class="highlightedSection nosidepad clearfix back">
<div class="highlightedSubSection" ng-class="{fullsize : uploadModel.active}" ng-show="!Applying && !FinishedWithErrors && !offlineActivationScreenVisible">
<h2>Licence File</h2>
Upload and apply a valid licence file{{uploadModel.active}}<br /><br />
...
<form id="hiddenUploadForm" name="hiddenUploadForm" target="hiddenUploadFormFileTarget" action="/settings/uploadILP" method="post" enctype="multipart/form-data" style="display: none;">
<input id="hiddenUploadFormFile" name="file" type="file" ng-model="uploadModel.uploadFileName" onchange="angular.element(this).scope().uploadFileChanged()" />
<iframe id="hiddenUploadFormFileTarget" name="hiddenUploadFormFileTarget" iframe-onload="uploadFileFinished()"></iframe>
</form>
</div>
</div>
</div>
ViewModel
angular.module('licenceApp.controllers', [])
.controller('licenceController', ['$scope', 'licenceAPIservice', '$filter', '$timeout', function ($scope, licenceAPIservice, $filter, $timeout) {
$scope.uploadModel = {
active: false,
uploadFileName: "",
uploading: false
};
$scope.uploadFileChanged = function() {
$scope.uploadModel.active = true;
$scope.uploadModel.uploading = true;
$('#hiddenUploadForm').submit();
}
...
Так что, когда я меняю uploadModel.active
в функции он показывает правильное значение через console.log
, но дисплей оленья кожа имитируют новое значение! Я все еще подвержен прототипному наследованию здесь? Обратите внимание, что при изменении управления входным файлом удаляется uploadFileChanged
.
Выполняет ли 'ng-change' работу с файловыми входами? Я слышал, что это не ... – Chris
Да, я просто дважды проверил, и он не работает со входами. В этом случае мне просто нужно использовать $ apply в моей функции? – Chris
ngChange требует, чтобы ngModel работал, поэтому, если поле ввода имеет ngModel, оно должно работать нормально. – Wawy