首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >无法访问HTML中的嵌套JSON对象

无法访问HTML中的嵌套JSON对象
EN

Stack Overflow用户
提问于 2017-04-21 02:19:50
回答 3查看 170关注 0票数 1

AngularJS V1.6.4

$scope.aCourse"name“被正确地记录到控制台,但在HTML码中,屏幕中没有填充任何内容。

代码语言:javascript
复制
$scope.getCourse = function(idd){
        $http.defaults.headers.common['Authorization'] = 'Basic ' + btoa($cookieStore.get('username') + ':' + $cookieStore.get('password')  );
        $http({
              method: 'GET',
              url: 'http://localhost:8080/course/'+idd,

            }).then(function successCallback(response) {
                $scope.aCourse = response.data;
                console.log($scope.aCourse["name"]);

                window.location = "/website-take-course.html";
              }, function errorCallback(response) {
                  alert("Course data in fetching failed");
              });
    }

HTML代码:

代码语言:javascript
复制
<div class="page-section padding-top-none" ng-repeat="c in aCourse" >
            <div class="media media-grid v-middle">
              <div class="media-left">
                <span class="icon-block half bg-blue-300 text-white">1</span>
              </div>
              <div class="media-body" >
                <h1 class="text-display-1 margin-none" >{{c.name}}</h1>
              </div>
            </div>
            <br/>
            <p class="text-body-2">{{c.description}}</p>
          </div>
EN

回答 3

Stack Overflow用户

发布于 2017-04-21 02:27:16

根据你的帖子,它看起来像$scope.aCourse是一个对象,而不是一个数组。

按如下方式更改它:

代码语言:javascript
复制
<div class="page-section padding-top-none" ">
    <div class="media media-grid v-middle">
        <div class="media-left">
            <span class="icon-block half bg-blue-300 text-white">1</span>
        </div>
        <div class="media-body">
            <h1 class="text-display-1 margin-none">{ aCourse.name }}</h1>
        </div>
    </div>
    <br/>
    <p class="text-body-2">{{aCourse.description}}</p>
</div>

或者使用像这样的东西来迭代对象,

代码语言:javascript
复制
 <div ng-repeat="(key,value) in aCourse">
      {{key}} : {{value}}
  </div>

演示

代码语言:javascript
复制
var app = angular.module('filterApp', []);
app.controller('myCtrl', function($scope) {

    $scope.aCourse = {
      "content": "SO",
      "description": "Programmers"
    };

 
});
代码语言:javascript
复制
<!DOCTYPE html>
<html >
<head>
  <script>
    document.write('<base href="' + document.location + '" />');
  </script>
  <link rel="stylesheet" href="style.css" />
  <script src="https://code.angularjs.org/1.4.7/angular.js"></script>
  <script src="app.js"></script>
</head>

<body ng-app="filterApp" ng-controller="myCtrl">
    <div ng-repeat="(key,value) in aCourse">
     {{key}} : {{value}}
    </div>
</body>

</html>

票数 2
EN

Stack Overflow用户

发布于 2017-04-21 16:33:04

可能有两种情况:

1. $scope.aCourse是objects [{},{},{}]的数组。

演示

代码语言:javascript
复制
var myApp = angular.module('myApp',[]);

myApp.controller('MyCtrl', function($scope) {
    $scope.aCourse = [
      {
        "name": "alpha",
        "description" : "description1"
      },
      {
        "name": "beta",
        "description" : "description2"      
      },
      {
        "name": "gamma",
        "description" : "description3"      
      }
    ];
});
代码语言:javascript
复制
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>
<div ng-app="myApp" ng-controller="MyCtrl">
  <div class="page-section padding-top-none" ng-repeat="c in aCourse" >
              <div class="media-body" >
                <h1 class="text-display-1 margin-none" >{{c.name}}</h1>
              </div>
            <p class="text-body-2">{{c.description}}</p>
          </div>
</div>

2. $scope.aCourseObject {......}

演示

代码语言:javascript
复制
var myApp = angular.module('myApp',[]);

myApp.controller('MyCtrl', function($scope) {
    $scope.aCourse = {
        "name": "alpha",
        "description" : "description1"
      };
    console.log($scope.aCourse["name"]);  
});
代码语言:javascript
复制
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>
<div ng-app="myApp" ng-controller="MyCtrl">
  <div class="page-section padding-top-none" ng-repeat="(key, value) in aCourse" >
              <div class="media-body" >
                <h1 class="text-display-1 margin-none" >{{value}}</h1>
              </div>
          </div>
</div>

票数 0
EN

Stack Overflow用户

发布于 2017-04-21 02:25:22

在angular代码中,您将aCourse设置为响应数据。然后,您可以使用以下命令将数据作为对象访问:

代码语言:javascript
复制
$scope.aCourse["name"]

然后,在html中,您在$scope.aCourse上运行一个ng-repeat,就好像它是一个对象数组:

代码语言:javascript
复制
<div class="page-section padding-top-none" ng-repeat="c in aCourse" >

您可能需要使aCourse成为使用当前html的对象数组,或者更新您的html并使用aCourse.nameaCourse.description访问aCourse中的对象。

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43527039

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档