javascript — ng-отключенный угловой js для оценки функции, которая получает $ http.get

я пытаюсь сделать мою кнопку ng-disbaled для оценки функции в контроллере, которая возвращает запрос от $ http.get вот мои коды

мой HTML-код

<a class="btn btn-warning"  ng-click="upVote(item,me.email);" ng-disabled="votecheck(item,me.email) != 'canvote'">

контроллер

$scope.votecheck = function(item,emailid){
var email = emailid;

http.post('ajax/voters.php?id='+item.ID+'&email='+email).success(function(data)
{

if(data === "CanVote")
{
return "canvote";
}
else
{
return "cant vote";
}
});

};

мой php эхо может голосовать или не может голосовать, если за состояние SQL в базу данных
кто-нибудь, пожалуйста, помогите сделать эту работу

обратите внимание, что мой идентификатор элемента уже предварительно загружен с предыдущей функцией объема

0

Решение

Попробуй это

$scope.votecheck = function (item, emailid) {

return $http.post('upload.php').then(function(data) {

if (data === "CanVote")
{
$scope.returnValue = "canvote";
}

else
{
$scope.returnValue = "cant vote";
}

return $scope.returnValue;
});

};

$scope.votecheck(item, emailid).then(function(data) {
console.log(data);
})
3

Другие решения

Поскольку вы делаете асинхронный вызов с http.post, вы не можете «вернуть» значение само по себе.

Вам нужно будет установить некоторые canVote свойство в вашей области на основе данных, поступающих в ваш обратный вызов успеха.

Таким образом, HTML будет выглядеть так:

<a class="btn btn-warning"  ng-click="upVote(item,me.email);" ng-disabled="!canVote">

Ваша новая функция будет выглядеть так:

function voteCheck(item,emailid) {
var email = emailid;
http.post('ajax/voters.php?id='+item.ID+'&email='+email).success(function(data) {
$scope.canVote = (data === 'CanVote');
});
}

voteCheck(item, emailid);
0

hi all i was able to solve my problem using traditionall javascript .ajax with this

Thanx y'all

$scope.votecheck = function(item,emailid){
var email = emailid;
var jsonData = $.ajax({
type: "GET",
url: 'ajax/voters.php?id='+item.ID+'&email='+email,
dataType: 'json',
async: false
}).responseText;
if(jsonData === "CanVote"){

return true;
}
else{

return false;
}   //return "canvote";
}
0
По вопросам рекламы [email protected]