簡體   English   中英

在angularjs中,如何訪問formController?

[英]in angularjs, how do I access a formController?

form.setPristine()表單中的數據時,希望設置form.setPristine() ,但是formController尚未在$ scope中注冊。

這似乎是一個愚蠢的問題,但是如何找到formController呢?

在下面的代碼中,獲取“ TypeError:無法調用未定義的方法'setPristine'”

的index.html

<ng-form name='wordForm' ng-controller='wordCntl' >
  ...
</ng-form>

word.js

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM