2017-02-17 21 views
0

http://embed.plnkr.co/keaGc3Y4Pmgfs04HJgnC/нг-изменение не работает после первой загрузки

Вот ссылка моих code.I пытается проверить мою загрузку, отключив кнопку загрузки данных, если файл пуст. Он работает в первый раз, но когда в следующий раз, когда я загружу файл, ng-change не работает, и кнопка все еще отображается отключенной, хотя я загрузил следующий файл. Я новичок в AngularJS, поэтому я мог бы сделать некоторую основную ошибку. Help.

+0

Вы всегда пытаетесь использовать тот же файл? Потому что для меня он работает нормально. Обратите внимание, что ng-change не будет срабатывать, если вы попытаетесь снова загрузить тот же файл. (потому что нет никаких изменений) – Founded1898

+0

ya ... Я пытаюсь загрузить тот же файл, есть ли какое-либо обходное решение? –

ответ

0

Поскольку вы пытаетесь загрузить тот же файл снова, onChange событие не срабатывает, потому что это тот же самый файл. Чтобы устранить эту проблему, вам нужно отменить поле ввода после того, как вы загрузили файл. К сожалению, для этого вам нужно использовать jQuery (или получить элемент wit vanilla js). Таким образом, в вашей onFileLoad функции вы могли бы сделать что-то вроде этого:

angular.element("input[type='file']").val(null); // Unset Input 
$scope.filename = undefined; // Unset $scope property 

Обратите внимание, что это не «Угловая» способ сделать это. Было бы лучше переместить это в директиву, потому что вам не следует манипулировать DOM внутри контроллера.

Обновление: Как уже говорилось, для этого вам необходимо включить jQuery. Угловой jqLite не поддерживает выбор элементов DOM по его type. Таким образом, вы включаете jQuery (необходимо загрузить до углового!) Или вы изменяете код, чтобы использовать vanilla JS или jqlite.

+0

Пробовал делать файл .... еще ng-change не запускается .. –

+0

см. Обновленный ответ – Founded1898

-1
Please change, initially 

vm.foo = 'Monthly' 

<input type="radio" name="{{item.deviceId}}" ng-model="renew.foo" ng-value="'Monthly'" ng-click="renew.updatePref(item, 'Monthly')">Monthly 
<input type="radio" name="{{item.deviceId}}" ng-model="renew.bar" ng-value="'Yearly'" ng-click="renew.updatePref(item, 'Yearly')">Yearly 
you have use ng-change, change event never happen as value for these input remains always same. use, 

var vm = this; 
you are also using ng-value="Monthly", Monthly is variable (undefiend) for ng-value. either use value="Monthly" or ng-value="'Monthly'". 
+0

пожалуйста, уточните (я думаю, что это решение не имеет отношения к моему вопросу) –

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

  • Нет связанных вопросов^_^