Как это сделать, если регистрация в контроллере AngularJS

0

У меня есть угловой контроллер, в котором у меня есть функция, которая должна вернуть изображение, зависит от 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}}"/>
Теги:

3 ответа

6
Лучший ответ

Вы не выполняете равенство:

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.

  • 0
    Не могу поверить, что это была моя ошибка, я подумал, что это немного сложнее, спасибо!
  • 0
    Это случается с лучшими из нас, приятель, не волнуйся!
1

Вы назначаете значение, но вы должны его проверить:

$ scope.returnedUser.country == "США"

0

Вы можете использовать этот способ, если страны уже установлены из определенной группы стран, и сравнение не является обязательным.

$scope.image_base = "/base_icons/";
$scope.returnedUser = response.data;
$scope.img = $scope.image_base + ($scope.returnedUser.country).toLowerCase() + ".png";

С уважением.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню