[英]How do I access FormController in parent controller or scope in AngularJS
[英]in angularjs, how do I access a formController?
在form.setPristine()
表單中的數據時,希望設置form.setPristine()
,但是formController
尚未在$ scope中注冊。
這似乎是一個愚蠢的問題,但是如何找到formController
呢?
在下面的代碼中,獲取“ TypeError:無法調用未定義的方法'setPristine'”
<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
設置它。 但它還不存在,我也不知道如何找到它。
指令控制器在其他指令之間共享。 要訪問它,請在表單上創建一個自定義指令,它成為鏈接函數的第4個屬性。
在您的自定義指令中,您可以執行以下操作:
//inside custom directive
link: function(scope, element, attrs, controller){
controller.$setPristine();
}
我意識到這是對您問題的非常直白的回答。 真正的解決方案可能是不調用$ scope.reset ...為什么需要這樣做? 您的表格不是從原始開始嗎? 如果不是,是什么使它不原始?
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.