Вернуть обещание от Angularjs webapi - PullRequest
0 голосов
/ 17 сентября 2018

Используя Angularjs здесь:

У меня есть форма, где пользователь заполняет некоторые данные и нажимает кнопку сохранения, чтобы сохранить данные:

  $scope.save = function (isValid) {
        if (isValid) {
            if (!$scope.checkBoxChecked) {
                $scope.getExistingName($scope.uName);
            }              
            var name = $scope.uName != '' ? $scope.uName? : 'testuser';                
           //Call save api                    
        }
        else {
            return false;
        }
    };

В методе сохранения я проверяю uname,который получает значение путем вызова другого API, как показано ниже:

    $scope.getExistingName = function (uName) {
         myService.getDataFromApi(uName).then(function (data) {
         var existingSetName = '';
         if(data.length >0)
          {
             $scope.uName = data[i].uName;
          }               
        });
    }

Проблема в том, что $ scope.uName в моей кнопке Сохранить всегда равно ''.Я попытался отладить и обнаружил, что результатом метода $ scope.getExistingName является обещание, которое отложено и возвращено после вызова orignal.Из-за чего мой $ scope.uName пуст.

Что мне здесь не хватает?

- Обновлено ---

Метод сохранения:

var name = $scope.getExistingName($scope.uName);

Обновлено getExistingName

   $scope.getExistingName = function (uName) {
     return myService.getDataFromApi(uName).then(function (data) {
     var existingSetName = '';
     if(data.length >0)
      {
         return data[i].uName;
      }               
    });
}

- Это работает -

   if (!$scope.checkBoxChecked) {
           $scope.getExistingName($scope.uName).then(function(data)
           {
             var name = $scope.uName != '' ? $scope.uName? : 'testuser';
             //Call save api 
           });
        }    
   else
   {
       var name = $scope.uName != '' ? $scope.uName? : 'testuser';
       //Call save api 
   }
...