重置表单中的数据时,希望设置form.setPristine()
,但formController
尚未在$ scope中注册。
这似乎是一个愚蠢的问题,但我怎样才能找到formController
?
在下面的代码中,获取“TypeError:无法调用方法'setPristine'的undefined”
<ng-form name='wordForm' ng-controller='wordCntl' > ... </ng-form>
var langMod = angular.module('langMod', []); langMod.controller( 'wordCntl', function($scope,$http,$location) { // data $scope.dflt = { wrd_id: '', usr_id: '', ln: '', word: '' }; $scope.orig = {}; $scope.data = {}; // pull record default $scope.reset = function() { $scope.orig = angular.copy($scope.dflt); $scope.data = angular.copy($scope.orig); $scope.wordForm.setPristine(); } $scope.reset(); };
我知道进入formController
的唯一方法是在$scope
中设置它。但它还没有,我不知道如何找到它。
答案 0 :(得分:2)
指令控制器在其他指令之间共享。要访问它,请在表单上创建一个自定义指令,它将成为链接函数的第4个属性。
在自定义指令中,您可以这样做:
//inside custom directive
link: function(scope, element, attrs, controller){
controller.$setPristine();
}
我意识到这是对你的问题的一个非常直接的答案。真正的解决方案可能不是调用$ scope.reset ......为什么你需要?你的形式不是从原始开始的吗?如果没有,是什么让它不纯净?