2014-06-29 148 views
-1

在以下應用程序中,如果客戶已經存在,我想顯示一條錯誤消息。我嘗試通過循環遍歷客戶名稱來完成此操作,但它似乎不起作用。換句話說,如何使用angular js檢查客戶名是否已經存在?如何驗證角度js

這裏是我迄今:

<script> 
    //create an object that ties with module 
    // pass an array of dependencies 
    var myApp = angular.module('myApp', []); 
    //create controller 
    myApp.controller('MainController', function($scope){ 
    $scope.customers = []; 
    $scope.addCustomer = function(){ 
     $scope.date = new Date(); 
     $scope.customers.push({ 
     name: $scope.customer.name 
     }); 

     for(var i = 0; i < $scope.customers.name.length; i++) { 
     if(customers[i].name == name) { 
      alert('Customer already exists'); 
     } 
     }  
    }; 

    $scope.removeCustomer = function(index) { 
     $scope.customers.splice(index,1); 
    }; 
    }); 

</script> 

回答

1

我想你在for聲明中犯了一個錯誤。

您的代碼

for(var i = 0; i < $scope.customers.name.length; i++) { ... 

應該是:

for(var i = 0; i < $scope.customers.length; i++) { ... 

編輯1
我有添加一個完整版本的基礎上你的存在代碼驗證的:

$scope.addCustomer = function() {  
    var isExisted = false; 

    for(var i = 0; i < $scope.customers.length; i++) { 
    if($scope.customers[i].name == $scope.customer.name) { 
     isExisted = true; 
     break; 
    } 
    } 

    if (isExisted) { 
    // inform user 
    alert('Customer already exists'); 
    } else { 
    // save new customer 
    $scope.customers.push({ 
     name: $scope.customer.name 
    }); 

    // clear the input, maybe 
    $scope.customer = {}; 
    } 
}; 

EDIT 2

我已經加入我的意見對你的代碼:

  • 在循環中,你的條件邏輯$scope.customers.name.length是錯誤的。更正是$scope.customers.length。你想循環數組$scope.customers,對吧?
  • 您檢查現有的條件邏輯也是錯誤的。 customers[i].name == name:什麼是變量customersname?它們是未定義的。我認爲他們應該是$scope.customers$scope.customer.name
  • 找到存在的客戶後,應該添加break聲明。不需要繼續循環,對吧?
  • 你應該改善你的代碼風格。請注意縮進和分號。
+0

是啊,這不出於某種原因? – visBar

+0

請參閱我的編輯。 –

+0

Mr.d謝謝你的幫助,現在已經很清楚了。我將確保在未來實施您的建議。非常感謝。 – visBar

0

創建一個獨立的功能檢查和調用,在add功能:

$scope.addCustomer = function(){ 
    $scope.date = new Date(); 

    if (doesCustomerExist($scope.customer.name) == false) { 
     $scope.customers.push({ 
      name: $scope.customer.nam 
     }); 
    } 
} 

function doesCustomerExist(name) { 
    for (var i = 0; i < $scope.customers.length; i++) { 
     if ($scope.customers[i].name == name) return true; 
    } 
    return false; 
}