javascript - angularjs.在 http.get 之后显示对象属性

标签 javascript angularjs

我是 Angular.js 的新手,我在 codeschool.com 上学习了 Shaping up with angularjs 教程,所以请原谅我我试图解决的问题可能太容易解决了。

所以,我只是想将我从 $http.get() 获取的数据显示到我的文档中,这是 JSON 对象。

index.html:

<!doctype html>
<html>
<head>
    <meta charset="utf-8">
    <title>League of legends</title>

    <!-- Load StyleSheets -->
    <link rel="stylesheet" type="text/css" href="css/bootstrap.min.css">

    <!-- Load Javascript Libraries -->
    <script type="text/javascript" src="js/jquery.min.js"></script>
    <script type="text/javascript" src="js/bootstrap.min.js"></script>
    <script type="text/javascript" src="js/angular.min.js"></script>
    <script type="text/javascript" src="js/app.js"></script>
</head>
<body ng-app="LeagueOfLegends">
    <!-- Navbar menu -->
    <nav class="navbar navbar-default">
        <div class="container-fluid">
            <div class="collapse navbar-collapse">
                <ul class="nav navbar-nav">
                    <li>
                        <a href="#">About</a>
                    </li>
                    <li>
                        <a href="#">Contact</a>
                    </li>
                </ul>
            </div>
        </div>
    </nav>
    <div class="container">
        <div ng-controller="searchSummoner as summoner">
            <!-- Search Form -->
            <div ng-show="summoner.status.showSearch">
                <form ng-submit="summoner.search()">
                    <div class="well">
                        <div class="form-group">
                            <label for="summonerName">Summoner Name</label>
                            <input type="text" class="form-control" placeholder="Enter Summoner Name" id="summonerName" ng-model="summoner.form.name">
                        </div>
                        <div class="form-group">
                            <label ng-repeat="region in summoner.region">
                                <input type="radio" ng-model="summoner.form.region" ng-value="region">{{region}}
                            </label>
                        </div>
                        <input type="submit" class="btn btn-default" value="Search"></input>
                    </div>
                </form>
            </div>
            <p ng-show="summoner.status.showResult">Get request from: {{summoner.data.name}}</p>
        </div>
    </div>
</body>

app.js(模块 Controller ):

var app = angular.module('LeagueOfLegends', []);

app.controller('searchSummoner', ['$http', function($http)
{
    var form = {};
    this.data = {};

    this.form = {};
    this.status = {
        showSearch: true,
        showResult: false
    };

    this.region = ['br', 'eune', 'euw', 'lan', 'las', 'na', 'oce', 'kr', 'tr'];

    this.search = function()
    {
        form = this.form;

        this.form = {};

        // get data from the api rest
        $http.get(getApiUrl(form)).success(function(data){
            this.data = data[form.name];
            console.log(this.data);
        });

        // hide form
        this.status.showSearch = false;
        this.status.showResult = true;
    };
}]);

function getApiUrl(form)
{
    var apiKey = 'fe9eb24f-5800-4f2a-b570-15328062b341';

    return 'https://lan.api.pvp.net/api/lol/' + form.region + '/v1.4/summoner/by-name/' + form.name + '?api_key=fe9eb24f-5800-4f2a-b570-15328062b341'
}

$http.get 成功后,我打了个日志,只是为了检查我检索到的数据是否是我需要的数据,但它没有在html中显示对象属性

最佳答案

您在错误的闭包中使用了 this。这是你应该做的:

var that = this;//give controller scope access

// get data from the api rest
$http.get(getApiUrl(form)).success(function(data){
    that.data = data[form.name];
    console.log(that.data);
});

关于javascript - angularjs.在 http.get 之后显示对象属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27557768/

相关文章:

javascript - 类型错误 : Cannot Read Property 'push' of undefined in two-dimensional array

javascript - 带有 ui-router 的 AngularJS 初始化变量

javascript - angularjs api ,返回对象

javascript - JQuery通过变量: multiple table rows识别元素id

javascript - .NET 客户端 requiredFIeldValidator 与 Bootstrap "has-error"类

javascript - 如何在JS中实现一条链?

javascript - 两个子组件之间的数据传输问题

angularjs - 为什么 {{ isNan(x) }} 在 angularJS 中不起作用?

javascript - AngularJS 多选使用 ng-repeat

javascript - AngularJS 过滤器搜索