2015-05-21 4 views
1
$scope.inUserList = function(){ 
    angular.forEach($scope.usernames, function(uname){ 
     if (uname.name == $scope.username){ 
      alert("WOOW"); 
      return true; 
     } 
    }); 
    return false; 
}; 

Функция, которая требует это:Что не так с этим выражением AngularForEach?

$scope.addusername = function(){ 
    if ($scope.username && !$scope.inUserList()){ 
     $scope.usernames.push({name: $scope.username}); 
     //$scope.usernames[$scope.usernames.length - 1] = serverList.save({command: 'addUser'}, $scope.usernames[$scope.usernames.length - 1]); 
     var currentUser = $scope.usernames[$scope.usernames.length - 1]; 
     angular.toJson(currentUser); 
     $http.post('http://localhost:8080/server/todoList/addUser', currentUser) 
      .success(function(response) {}) 
      .error(function(response) {alert("Failed to post");}); 
     $scope.loggedIn = true; 
    } 
    if ($scope.username && $scope.inUserList()){ 
     alert("Welcome back"); 
     $scope.loggedIn = true; 
    } 
    else{ 
     alert("Need a username"); 
    } 
}; 

Вот когда имя вводится в HTML:

<label> Log In: 
     <input type="text" ng-model="username"> 
     <input type="submit" ng-click="addusername() ; ToDoView()"> 
    </label> 

В $ scope.usernames просто JSON объект с одним свойством "имя". Я никогда не смогу получить это выражение для оценки истины, и я не понимаю, почему. Мои имена точно такие же, как те, которые находятся в базе данных, но выражение по-прежнему оценивается как ложное.

+0

У вас есть демоверсия, чтобы воспроизвести проблему? Другое примечание: return true внутри forEach не выйдет из цикла. – PSL

+0

Нужно ли добавить перерыв; тогда? И я могу добавить больше функций, идущих на op – Ajv2324

+0

if (uname == $ scope.username) { – HankScorpio

ответ

0

uname будет иметь это имя поле, затем. uname.name, вероятно, будет неопределенным. Попробуйте это:

angular.forEach($scope.usernames, function(name){ 
    if (name == $scope.username){ 
    ... 
+0

Я должен был добавить в моем открытии, но $ scope.usernames - это массив, содержащий объекты с параметром «имя». – Ajv2324

0

Я понял это, она участвует только меняет функцию inUserList и перезапуск моего сервера. По какой-то причине я по-прежнему не получаю предупреждение, но он работает по назначению.

$scope.inUserList = function(){ 
    var newUsername = $scope.username 
    var flag = false; 

    angular.forEach($scope.usernames, function(uname){ 
     if (uname.name == newUsername){ 
      flag = true; 
     } 
    }); 
    if (flag) 
     return true; 
    else 
     return false; 
}; 
Смежные вопросы