2017-10-10 6 views
0

私はAngularJsを使って簡単なことをしようとしていますが、そうすることはできません。私の要件 - TextBoxがあり、ユーザーはそれを入力する必要があります。次のように言う:ワード長が1に等しいときに、ユーザが入力開始したときAngularJsの名前変更の発生をカウントする

<body ng-controller="EmployeeController"> 
    <div ng-repeat="m in Employees"> 
    <input type="text" ng-model="m.name" ng-change="m.onCount()"> 
    <h2>Count the occurrence of name changing {{m.employeeCount}}.</h2> 
    </div> 
</body> 

onCount機能が動作します。さて問題は、私の次のコードを使用して、ある、それはダブルカウント:

employee.onCount = function() { 
    if (employee.name.length == 1) { 
     employee.employeeCount += 1; 
    } 
}; 

ダブル手段を、仮定、私はTextを入力していますジョンを言って、それが1をカウントし、私は再び、それを消去するとき、それはカウント1.合計は2になります。消去されたものは数えてはなりません。私は消去されたものの数え方をどうやって防ぐことができないのか分かりません。ここでは、従業員オブジェクトを作成するため、以下のコードであり、それは工場を使用して機能です。名前の長さのため

var module = angular.module('myApp', []); 
module.factory('employeeService', function() { 
     var createDefaultEmployee = function() { 
      var employee = { 
       name: "", 
       employeeCount: 0 
      }; 

      employee.onCount = function() { 
       if (employee.name.length == 1) { 
        employee.employeeCount += 1; 
       } 
      }; 
      return employee; 
     }; 

     return { 
      createEmployee: function (name) { 
       var employee = createDefaultEmployee(); 
       employee.name = name; 
       return employee ; 
      } 
     }; 
    }); 

module.controller('EmployeeController', ['$scope', 'employeeService', 
    function ($scope, employeeService) { 
     $scope.Employees= [employeeService.createEmployee()]; 
    } 
]); 

答えて

2

チェックはゼロであり、1を引く:

employee.onCount = function() { 
    if(employee.employeeCount > 0 && employee.name.length==0){ 
     employee.employeeCount--; 
    } 
    else if (employee.name.length == 1) { 
     employee.employeeCount++; 
    } 
}; 
+0

が@Hoyen完全に働きました。ありがとう。 –

関連する問題