簡體   English   中英

控制器中的AngularJS形式始終未定義

[英]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-includeng-if在這種情況下,因為在父范圍內不存在表單對象,所以當angular在子范圍內創建父對象時,父對象將看不到。

您可以通過在父控制器中簡單創建一個空對象來解決該問題,該對象將被子作用域繼承。 由於該對象現在存在,因此將不需要創建新對象,並且所有屬性都將添加到子作用域中的引用。

$scope.newbidform ={};
$scope.postNewBid = function(form) {...

暫無
暫無

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

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