[英]Angularjs form in controller always undefined
在我的項目中,我使用ui-view並具有以下結構(刪除了不必要的代碼):
<main class="content">
<div class="inner" ng-controller="OrderPageController">
<div ui-view="main-info"></div>
<div ui-view="comments"></div>
<div ui-view="bids-list"></div>
<div ui-view="add-bid"></div>
</div>
</main>
在加價競標視圖中:
<form name="newbidform" novalidate ng-submit="postNewBid(newbidform);">
<input type="text" ng-model="newbid.bid" required>
<input type="submit">
</form>
因此,然后我提交表單,嘗試檢查所有必需的輸入是否有效:
$scope.postNewBid = function(form) {
console.log(form) // $valid and $invalid always undefined
console.log($scope.newbidform) // always undefined
// check validity before send
if (!form.$valid) {
angular.forEach(form.$error, function (field) {
angular.forEach(field, function(errorField){
errorField.$setTouched();
})
});
$scope.failedSubmit = true;
return false;
} else {
$scope.failedSubmit = false;
}
// other things if form is valid
因此,表單的問題始終是不確定的(根本就是$ valid / $ invalid attr)。 我試圖將formName用作函數中的參數,用作$ scope.formName變量(始終未定義),並在窗體上第二次定義了兩次控制器:
<form name="newbidform" novalidate ng-submit="postNewBid();" ng-controller="OrderPageController">
實際上,它可以工作,但是當我嘗試訪問控制器中的其他變量時,我做不到。 那么,有沒有辦法在AngularJs的控制器中獲取表單狀態? 謝謝
newbid是您想要獲取的變量,對嗎?
嘗試:
<form name="newbidform" novalidate ng-submit="postNewBid(newbid);">
聽起來您的表單嵌套在子范圍內,例如在ng-include
或ng-if
在這種情況下,因為在父范圍內不存在表單對象,所以當angular在子范圍內創建父對象時,父對象將看不到。
您可以通過在父控制器中簡單創建一個空對象來解決該問題,該對象將被子作用域繼承。 由於該對象現在存在,因此將不需要創建新對象,並且所有屬性都將添加到子作用域中的引用。
$scope.newbidform ={};
$scope.postNewBid = function(form) {...
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.