我有一个角度复位功能,可以清除表单中的所有字段。如果我做类似的事情:
<a href="#" ng-click="resetForm()">reset</a> $scope.resetForm = function() { $scope.someForm = {}; }
一切正常。但我想将此功能用于网站上的多种表单。如果我像这样传递表单对象:
<a href="#" ng-click="resetForm(someForm)">reset</a> $scope.resetForm = function(form) { $scope.form = {}; }
那就行不通了。有人可以向我解释为什么会这样吗?
您有2个问题:
someForm
form = {}
尝试:
$scope.resetForm = function(form) { //Even when you use form = {} it does not work form.fieldA = null; form.fieldB = null; ///more fields }
要么
$scope.resetForm = function(form) { //Even when you use form = {} it does not work angular.copy({},form); }
代替:
$scope.resetForm = function(form) { $scope.form = {}; }
在您的朋克中,我看到您没有将视图与模型分离。您应该这样做是为了分离关注点,并避免在清除所有字段(包括DOM表单对象的字段)时可能发生的问题。
<form name="form2" ng-controller="SecondController"> <label for="first_field">First Field</label> <input ng-model="form2Model.first_field" /> <br /> <label for="second_field">Second Field</label> <input ng-model="form2Model.second_field" /> <br /> <a href="#" ng-click="secondReset(form2Model)">Reset the form</a> </form>
http://plnkr.co/edit/x4JAeXra1bP4cQjIBld0?p=preview