从AngularJS WebAPI返回承诺

时间:2018-09-17 16:00:21

标签: angularjs angular-promise

在此处使用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;
        }
    };

在save方法中,我正在检查uname,它通过调用另一个api来获得它的值,如下所示:

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

问题是$ scope.u我的“保存”按钮中的名称始终为。我尝试调试,发现$ scope.getExistingName方法的结果 存在是诺言被延误并在原始召唤后返回。因此,我的$ 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 
   }

0 个答案:

没有答案