AngularJS显示一个json对象

时间:2016-03-23 09:40:29

标签: javascript angularjs json

我从我的api新闻中收到了指定的id。当我显示我使用ng-repeat的所有新闻并且工作正常但是当我想要显示一个对象时,这种方法不起作用。

我的.when代码:

.when('/displaynews/:id',{
    templateUrl: 'views/display.html',
    controller: 'NewsDisplayController',
    constollerAs: 'displaydash'
})

controller

.controller('NewsDisplayController',
    function($routeParams, NewsModel){

      var displaydash = this;
      var newsId = $routeParams.id;
      path = 'getNewsById/'+newsId;

      function getNewsById() {
          NewsModel.getNewsById().then(function (result){
              displaydash.news = result.data;
              console.log(displaydash.news);
          })
      }

      getNewsById();
})

来自console.log的结果:

Object { id="56f1ba6b275c8aa5bf4895d8",  title="Tytul",  text="Text",  more...}

如何在我的html模板中显示?

我尝试以这种方式显示在html文件中:

<p>{{news.title}}</p>
<p>{{news.text}}</p>

但它不起作用

2 个答案:

答案 0 :(得分:2)

你可以去:

angular.toJson(JSONObj);

所以,在这里你可以去: 在控制器中:

displaydash.news = result.data;
$scope.news      = angular.toJson(displaydash.news);
HTML中的

<p>{{news}}</p>

您的问题中的问题很简单,您正在尝试访问尚未定义的新闻对象,尝试为其创建范围变量,您将能够轻松访问它:

 $scope.displaydash.news = result.data;

<p>{{displaydash.news.title}}</p>
<p>{{displaydash.news.text}}</p>

参考:https://docs.angularjs.org/api/ng/function/angular.toJson

答案 1 :(得分:1)

如果result.data是一个对象,请用方括号括起来并设置为news,否则直接使用它。

 displaydash.news = typeof(result.data) == "object"?[result.data]: result.data;