我试图在Angular 1.5的组件中使用表单
我有表单工作,因为我有模型绑定,可以获取提交数据。所以我90%的目标都是我想要的,缺少的是能够使用$ setPristine正确地重置表单。
我尝试过几种方法,第一种方法是将形式作为重置函数的参数传递。
form.html
<form name="$ctrl.userForm">
...
<input class="btn btn-default" type="button" ng-click="$ctrl.reset($ctrl.userForm)" value="Reset" />
</form>
form.component.js
ctrl.reset = function(userForm) {
ctrl.user = {};
userForm.$setPristine // Cannot read property '$setPristine' of undefined
};
我也尝试将$ ctrl.userForm声明为空对象$ onInit,但这似乎也没有用。删除$ setPristine行后,重置可以清除表单数据,但不会从角度透视状态。
关于我失踪的想法?
答案 0 :(得分:3)
从你的傻瓜那里你可以宣告整个组件。
function formController() {
var ctrl = this;
...
ctrl.reset = function(userForm) {
ctrl.user = {};
userForm.$setPristine
};
ctrl.reset();
}
错误源自此行ctrl.reset();
,您可以在此行中调用方法而不发送参数userForm
。此外,您以错误的方式使用$setPristine
,并且您也不必将表单作为参数传递。
我很高兴您使用控制器上声明的表单,如下所示:
angular
.module('application')
.component('mkForm', {
templateUrl: 'form.html',
controller: formController
});
function formController() {
var ctrl = this;
ctrl.master = {};
ctrl.update = function(user) {
ctrl.master = angular.copy(user);
};
ctrl.reset = function() {
ctrl.user = {};
ctrl.userForm.$setPristine();
};
}
注意:您不必调用
ctrl.reset();
,因为原始状态是默认状态。