http://embed.plnkr.co/keaGc3Y4Pmgfs04HJgnC/
这是我的代码的链接。我正在尝试通过在文件为空时禁用加载数据按钮来验证我的上传。 它是第一次工作,但是当我下次上传文件时,ng-change无效并且按钮仍然显示已禁用,尽管我已经上传了下一个文件。 我是AngularJS的初学者,所以我可能会做一些基本的错误。请帮忙。
答案 0 :(得分:0)
由于您尝试再次上传同一文件,onChange
事件将不会触发,因为它是同一个文件。要解决此问题,您需要在上载文件后取消设置输入字段。不幸的是,你必须使用jQuery(或获取元素wit vanilla js)。因此,在onFileLoad
函数中,您可以执行以下操作:
angular.element("input[type='file']").val(null); // Unset Input
$scope.filename = undefined; // Unset $scope property
请注意,这不是" angular"这样做的方式。将它移到指令中会更好,因为你不应该在Controller中操作DOM。
<强>更新强>:
如前所述,您需要包含jQuery才能实现此功能。 Angular的jqLite不支持通过type
选择DOM元素。所以,要么包含jQuery(需要在angular之前加载!),要么修改代码以便使用vanilla JS或jqlite。
答案 1 :(得分:-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'".