2016-01-07 14 views
1

的HTML '$有效':內標籤集角JS表單驗證給出錯誤:類型錯誤:無法讀取屬性未定義

<tabset> 
    <tab heading="Create CS Sales Order & GRN-VRRE" > 
     <form name="motorForm" novalidate> 
      <input type="text" ng-model="ngtext" required /> 
      <button type="submit" ng-click="CSsalesVRRESave()" >submit</button> 
     </form> 
    </tab> 
    <tab heading="Create CS Sales Order & GRN-VRRE" > 
     <div>somthing inside it</div> 
    </tab> 
</tabset> 

JavaScript函數

$scope.CSsalesVRRESave = function() { 
      console.log($scope.motorForm.$valid); 
     } 

輸出控制檯給我的錯誤類型錯誤:

Cannot read property '$valid' of undefined :

注意:如果我刪除tabset它按照要求運行

回答

4

var app = angular.module('testApp', [ ]); 
 

 
app.controller('testController', ['$scope', '$location', function ($scope, $location) { 
 

 
$scope.CSsalesVRRESave = function (motorForm) { 
 
    if(motorForm.$valid==true){ 
 
    
 
    alert($scope.ngtext) 
 
    } else{ 
 
    alert("Please Enter some value"); 
 
    } 
 
}; 
 
    
 
    }]);
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script> 
 
<body ng-app="testApp" ng-controller="testController"> 
 
<tabset> 
 
    <tab heading="Create CS Sales Order & GRN-VRRE"> 
 
     <form name="motorForm" novalidate> 
 
      <input type="text" ng-model="ngtext" ng-required="true"/> 
 
      <button type="submit" ng-click="CSsalesVRRESave(motorForm)">submit</button> 
 
     </form> 
 
    </tab> 
 
    <tab heading="Create CS Sales Order & GRN-VRRE"> 
 
     <div>somthing inside it</div> 
 
    </tab> 
 
</tabset> 
 
    </body>

<tabset> 
    <tab heading="Create CS Sales Order & GRN-VRRE"> 
     <form name="motorForm" novalidate> 
      <input type="text" ng-model="ngtext" required/> 
      <button type="submit" ng-click="CSsalesVRRESave(motorForm)">submit</button> 
     </form> 
    </tab> 
    <tab heading="Create CS Sales Order & GRN-VRRE"> 
     <div>somthing inside it</div> 
    </tab> 
</tabset> 


$scope.CSsalesVRRESave = function (motorForm) { 
    console.log(motorForm.$valid); 
}; 
+0

錯誤消失了,但我無法在控制器中獲取ngtext的值。的console.log($ scope.ngtext);給我undefined – KIRANJOSHI

+0

我更新了代碼,現在檢查,如果它的工作請打勾並接受我的回答 – Nelson

2

我沒有足夠的因緣發表評論,而尼爾森的回答作品,但你看到擺在首位的問題,其原因是tabsets創建一個新的子$範圍,所以motorForm是該標籤的$scope的一部分。 ng-click轉到父$scope中的函數,該函數沒有這種形式。

解決此問題的另一種方法是讓您的表單成爲父$scope上的整體表單對象的值,這樣它們將通過引用進行訪問,並且它將按照您的預期進行操作。像 - 在你的控制器有$scope.forms = {},然後在你的模板有

<div ng-form="forms.motorForm"> 

,而不是你的正常形態。

相關問題