【问题标题】:ng-repeat gets commented and doesn´t show results from a JSON objectng-repeat 被评论并且不显示来自 JSON 对象的结果
【发布时间】:2017-08-16 23:15:24
【问题描述】:

我有这段代码,但我不知道为什么,但是 ng-repeat 指令被注释并且不显示 JSON 对象的结果。我检查了对象是否通过 toSource() 方法正确传递给“this.paises2”,看起来一切都很好。

我在这里检查过,但没有任何效果:

AngularJS: ng-repeat not displaying JSON

ng-repeat code getting commented out when viewed from browser

ngRepeat div get commented out when i see from the browser inspector

这是 HTML 代码:

<html ng-app="miModulo">



<head>

    <link href="mis-css.css" rel="stylesheet" type="text/css">

</head>

<body ng-controller="miControlador as vm">

    <button ng-click="vm.buscarEnRegion()">Pulsar</button>



    <ul ng-repeat="elemento in vm.paises">
    <li>

        {{elemento.name}}



    </li>

    </ul>

    <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.6.4/angular.min.js"></script>

    <script src="mijs1.js"></script>

</body>

还有 Javascript/Angular JS 代码:

angular
.module("miModulo",[])
.controller("miControlador",['$http',funcionPrincipal] ); 

function funcionPrincipal($http)
{   
    this.buscarEnRegion=function()
    {
        $http.get("https://restcountries.eu/rest/v1/region/africa").then(function(miRespuesta) 
        {
            this.paises=miRespuesta;

        //  alert(miRespuesta.toSource());

        alert(this.paises.toSource());



        },function(miRespuesta)
        {

            alert("incorrecto");
        }



        ); //then


    }


}

提前致谢。

【问题讨论】:

  • 你能创建一个 JSFiddle 吗?
  • 将 ng-repeat 从 ul 更改为 li

标签: javascript angularjs json angularjs-ng-repeat


【解决方案1】:

几个问题。来自angular docs

响应对象具有以下属性:

  • data – {string|Object} – 使用
  • 转换的响应正文
  • 转换函数。 status – {number} – 的 HTTP 状态代码
  • 响应。 headers – {function([headerName])} – Header getter 函数。
  • config – {Object} – 用于生成的配置对象
  • 请求。 statusText – {string} – 响应的 HTTP 状态文本。
  • xhrStatus – {string} – XMLHttpRequest 的状态(完成、错误、超时或中止)。

所以你想要的是miRespuesta.data

另一个问题是当您执行this.paises=miRespuesta 时,this 指的是函数,而不是控制器。所以你需要给控制器分配一个变量。所以把你的控制器改成这样:

function funcionPrincipal($http)
{   
    var vm = this;
    vm.buscarEnRegion=function()
    {
        $http.get("https://restcountries.eu/rest/v1/region/africa").then(function(miRespuesta) 
        {
            vm.paises=miRespuesta.data;
        },function(miRespuesta)
        {
            alert("incorrecto");
        }
        ); //then
    }
}

plunker

【讨论】:

  • 非常感谢!它完美地工作!我必须理解“这个”问题,因为我无法正确地看到它。我以为 JSON 对象是一个字符串,因为当我读到 JSON 对象是文本时我误解了,我认为这意味着字符串。
【解决方案2】:

改一下

<ul ng-repeat="elemento in vm.paises">
    <li>
    {{elemento.name}}
    </li>
</ul>

到这里

<ul >
    <li ng-repeat="elemento in vm.paises">
    {{elemento.name}}
   </li>
</ul>

【讨论】:

    猜你喜欢
    • 2023-03-09
    • 1970-01-01
    • 1970-01-01
    • 2012-09-03
    • 1970-01-01
    • 1970-01-01
    • 2017-06-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多