2015-12-15 5 views
2

Я получаю имя пользователя из поля ввода и отправляю его как параметр функции searchUser. Что возвращает имя пользователя со значением большего количества объектов.Переменная в пределах ссылки на объект

так, если я посылаю «daveeeeeed» в поле ввода и представить затем отправляет обратно

{"daveeeeeed":{"id":30155374,"name":"daveeeeeed","profileIconId":577,"summonerLevel":30,"revisionDate":1443840218000}} 

так в моем HTML документа я пытаюсь получить доступ к res.'daveeeeeed'.name распечатать ворота имя из запроса. Но, очевидно, {{res.username.name}} не работает. и в javascript я не могу использовать $ scope.res = data.username.name.

Мой вопрос: как использовать переменную из объекта? ех.

моя цель res.username.name // заменить имя пользователя с тем, что было отправить в виде

<form> 
<input type="text" ng-model="username" placeholder="username" name="username" /> 
<button ng-click="searchUser(username)" class="btn btn-primary">Submit</button> 
</form> 
{{ res }} 

вот Javascipt

$scope.searchUser = function(username){ 

    $http.get('https://na.api.pvp.net/api/lol/na/v1.4/summoner/by-name/' + username + '?api_key=<key>'). 
    success(function(data) { 
     $scope.res = data; 
    }).error(function(err) { 
     $scope.res = "User not found"; 
    }); 
} 
+3

Вы можете добавить 'username' в' $ scope' перед тем, как сделать http-вызов. Затем вы можете получить к нему доступ в своем шаблоне DOM, например, '{{res [username]}}' – sachinjain024

+0

большое вам спасибо! Я совершенно забыл об этом, я чувствую себя таким глупым! –

+0

Другим вариантом является вытащить ключ из объекта, например 'Object.keys (data) [0]' (предполагая только один ключ) – Phil

ответ

1

Добавление ответа от комментариев:

Вы можете добавьте имя пользователя в $ scope перед тем, как сделать http-вызов. Затем вы можете получить к нему доступ в своем шаблоне DOM, например {{res [имя_пользователя]}}.

Так Ваш код должен выглядеть следующим образом:

$scope.searchUser = function(username){ 

    $scope.username = username; // Notice this change 

    $http.get('https://na.api.pvp.net/api/lol/na/v1.4/summoner/by-name/' + username + '?api_key=<key>'). 
    success(function(data) { 
     $scope.res = data; 
    }).error(function(err) { 
     $scope.res = "User not found"; 
    } 
); 
} 

Шаблон должен выглядеть следующим образом:

{{ res[username] }} 
0

Вы можете сделать это двумя способами -

Метод 1: При возврате результата сделайте свойство объекта статическим (например, вместо отправки daveeeee ed, отправить пользователь).

{"user":{"id":30155374,"name":"daveeeeeed","profileIconId":577,"summonerLevel":30,"revisionDate":1443840218000}} 

таким образом, вы можете отобразить имя как:

<div> {{res.user.name}} </div> 

Метод 2 Если вы будете следовать своему собственному пути,

<div> {{res[username].name}} </div> 
Смежные вопросы