簡體   English   中英

ng-repeat內的ng-form不更新子窗體。

[英]ng-form inside ng-repeat not updating subform.$submitted

我正在嘗試在ng-repeat內創建表單,除“提交”按鈕外,其他一切都正常。 提交按鈕放置在主窗體中,這對於所有子窗體都是通用的。
如果單擊提交按鈕,則mainForm.$submitted會更新,但userForm.$submitted劑量不會更改。 有什么解決辦法嗎?

  angular.module("sampleApp", []) .controller('sampleCtrl', function($scope) { $scope.users = [{},{}]; }) 
 <script src="https://cdnjs.cloudflare.com/ajax/libs/angular.js/1.6.5/angular.js"></script> <div ng-app="sampleApp" ng-controller="sampleCtrl"> <form name="mainForm" novalidate> <input type="text" name="school" ng-model="school" required> main form input valid=>{{mainForm.school.$valid}} <div ng-repeat="user in users"> <ng-form name="userForm"> <input type="text" ng-model="user.name" name="name" required> sub form input valid=>{{userForm.name.$valid}} | sub form submit=>{{userForm.$submitted}} </ng-form> </div> <button type="submit">Submit</button> Form valid=>{{mainForm.$valid}} | Main From submit => {{mainForm.$submitted}} </form> </div> 

介紹

因此,我在按鈕上添加了ng-click處理程序,以便您也可以設置內部表單的提交狀態。

我唯一的困難是實際獲取表單引用,但是我添加了$scope.setUserForm函數,該函數使用ng-init調用。 解決方案模式來自: https : //stackoverflow.com/a/23862411/1688441

另外,請記住,您需要一組userForms來保留引用。 單擊時,您將遍歷這些元素並設置提交的內容。

  angular.module("sampleApp", []) .controller('sampleCtrl', function($scope) { $scope.UserForms = []; $scope.setUserForm = function(form) { $scope.UserForm = form; $scope.UserForms.push(form); } $scope.forms = {}; $scope.users = [{}, {}]; $scope.handleClick = function() { $scope.UserForms.forEach(function(element) { element.$submitted = true; }); }; }) 
 <script src="https://cdnjs.cloudflare.com/ajax/libs/angular.js/1.6.5/angular.js"></script> <div ng-app="sampleApp" ng-controller="sampleCtrl"> <form name="mainForm" novalidate> <input type="text" name="school" ng-model="school" required> input valid=>{{mainForm.school.$valid}} <div ng-repeat="user in users"> <ng-form name="userForm"> <div ng-init="setUserForm(userForm);"></div> <input type="text" ng-model="user.name" name="name" required> input valid=>{{userForm.name.$valid}} | form submit=>{{userForm.$submitted}} </ng-form> </div> <button type="submit" ng-click="handleClick()">Submit</button> Form valid=>{{mainForm.$valid}} | From submit => {{mainForm.$submitted}} </form> </div> 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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