Используя 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
}