首次上传后 ng-change 不起作用
ng-change not working after first upload
http://embed.plnkr.co/keaGc3Y4Pmgfs04HJgnC/
这是我的 code.I 的 link 我正在尝试通过在文件为空时禁用加载数据按钮来验证我的上传。
它是第一次工作,但是当我下次上传文件时,ng-change 不工作并且按钮仍然显示禁用,尽管我已经上传了下一个文件。
我是 AngularJS 的初学者,所以我可能会做一些基本的 mistake.please 帮助。
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'".
由于您试图再次上传同一个文件,onChange
事件将不会触发,因为它是同一个文件。要解决此问题,您需要在上传文件后取消设置输入字段。不幸的是,您必须为此使用 jQuery (或使用 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。
http://embed.plnkr.co/keaGc3Y4Pmgfs04HJgnC/
这是我的 code.I 的 link 我正在尝试通过在文件为空时禁用加载数据按钮来验证我的上传。 它是第一次工作,但是当我下次上传文件时,ng-change 不工作并且按钮仍然显示禁用,尽管我已经上传了下一个文件。 我是 AngularJS 的初学者,所以我可能会做一些基本的 mistake.please 帮助。
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'".
由于您试图再次上传同一个文件,onChange
事件将不会触发,因为它是同一个文件。要解决此问题,您需要在上传文件后取消设置输入字段。不幸的是,您必须为此使用 jQuery (或使用 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。