У меня есть угловой контроллер, в котором у меня есть функция, которая должна вернуть изображение, зависит от json, полученного от сервера. Проблема в том, что неважно, какая страна получена, она загружает только первую (usa.png в моем случае).
$scope.getUser = function(){
url = "/get";
$scope.img = "";
$http.post(url, {
"Id":$scope.Id,
"name":$scope.name
}).then(
function (response){
$scope.returnedUser = response.data;
if ($scope.returnedUser.country = "USA"){
$scope.img = "/base_icons/usa.png";
} else if ($scope.returnedUser.country = "Canada"){
$scope.img = "/base_icons/canada.png";
} else if ($scope.returnedUser.country = "Mexico"){
$scope.img = "/base_icons/mexico.png";
}
}, $scope.negativeMessage);};
<img ng-src="{{img}}"/>
Вы не выполняете равенство:
if ($scope.returnedUser.country = "USA") // this is an assignment operator in if
Должно быть:
if ($scope.returnedUser.country == "USA")
Или вы можете иметь строгое равенство (рекомендуется):
if ($scope.returnedUser.country === "USA")
Строгое равенство хорошее (в большинстве случаев), потому что это означает, что такие вещи, как '1' === 1
, не возвращают true, где '1' == 1
вернет true.
Вы назначаете значение, но вы должны его проверить:
$ scope.returnedUser.country == "США"
Вы можете использовать этот способ, если страны уже установлены из определенной группы стран, и сравнение не является обязательным.
$scope.image_base = "/base_icons/";
$scope.returnedUser = response.data;
$scope.img = $scope.image_base + ($scope.returnedUser.country).toLowerCase() + ".png";
С уважением.