[英]Cannot read property 'length' of undefined - javascript
我想驗證字段。 當用戶未在字段中輸入任何內容並單擊“提交”按鈕時,將無法對其進行驗證。
請參閱以下示例:
$scope.validateFields = function(){
alert("Comments " + $scope.comments); //When fields are blank and click on submit, it shows undefined
if($scope.comments === 'undefined'){
alert("comments are blank");//not printed
$scope.comments = 'undefined';
}
if( $scope.comments.length == 0){
alert("comments length is zero"); //not printed
$scope.comments = 'undefined';
}
在上面的示例代碼中,當單擊提交按鈕時未在注釋字段中輸入任何內容時,它沒有輸入if條件。 當評論字段為空並單擊提交按鈕時,我想分配$scope.comments='undefined'
。
使用下面的代碼。 您可以在加載控制器時初始化$ scope變量。
app.controller('myCtrl',function($scope,$http){
$scope.validateFields = function(){
if($scope.comments){
alert("comments are blank");
}
if( $scope.comments.length == 0){
alert("comments length is zero");
}
// alert("validate"+ $scope.comments.length);
}
function init() {
$scope.comments = '';
}
init();
});
檢查plunkr
第一個問題是您要檢查$ scope.comments是否與未定義的字符串匹配,而不是檢查當前是否在給定范圍內定義了它。
if($scope.comments === undefined) {
alert("comments are blank");//not printed
$scope.comments = '';
}
注意,我只是刪除了undefined周圍的引號來實現此目的。 您甚至可以為此使用速記來檢查該值是否為false。 您可以在線找到虛假值的完整列表,但其中有兩個是空字符串或未定義。
if(!$scope.comments) {
alert("comments are blank");//not printed
$scope.comments = '';
}
接下來,您可以通過僅使用如下注釋初始化$ scope來完全避免這種情況。
var app=angular.module("myApp",[]);
app.controller('myCtrl', function($scope,$http) {
$scope.comments = '';
$scope.validateFields = function() {
alert("Comments " + $scope.comments);
if(!$scope.comments){
alert("comments are blank");
}
else {
alert("comments exist");
}
}
});
檢查空值的最佳方法是
if ( testVar !== null )
{
// do action here
}
對於未定義
if ( testVar !== undefined )
{
// do action here
}
您可以分配一個帶有undefined的變量。
testVar = undefined;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.