【发布时间】:2014-09-25 15:10:23
【问题描述】:
我在 angular.js 使用 ng-repeat 指令渲染 json 数据时遇到问题。我目前正在使用 Django REST 框架。请参阅下面的源代码。谢谢。
REST API 运行良好。 (通过 curl 命令得到结果)
user$ curl localhost:8000/posts/ -i
HTTP/1.0 200 OK
Date: Sat, 02 Aug 2014 15:37:27 GMT
Server: WSGIServer/0.1 Python/2.7.8
Vary: Accept, Cookie
X-Frame-Options: SAMEORIGIN
Content-Type: application/json
Allow: GET, POST, HEAD, OPTIONS
[{"id": 1, "title": "First Post", "content": "hello world, my first post"}, {"id": 2, "title": "this is my second post via POST request", "content": "should return 201 Created"}, {"id": 3, "title": "third post", "content": "why not working"}]%
app.js : 使用 $http 服务的非常简单的控制器。
(function(){
var app = angular.module("PostApp", []);
app.controller("PostCtrl", ["$scope", "$http", function($scope, $http){
var store = this;
$http.get('/posts/')
.success(function(data){
$scope.datas = data;
console.log(data[0]);
});
}]);
})();
console.log(data[0]) 的结果是 ...(来自 Chrome 开发者工具 > 控制台)
Object {id: 1, title: "First Post", content: "hello world, my first post"}
我实际上不确定为什么这是一个“对象”。
查看(index.html)
<html ng-app="PostApp">
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
{% load staticfiles %}
<title>Angular.js with Django</title>
</head>
<body ng-controller="PostCtrl as pc">
<h1>Welcome to Angular.JS</h1>
<div ng-repeat="data in datas">
<h3>{{ data.title }}</h3>
</div>
<script src="{% static 'posts/angular.js' %}"></script>
<script src="{% static 'posts/app.js' %}"></script>
</body>
</html>
渲染的 HTML,这不是我想要的。
它没有渲染 {{ data.title }},(h3 元素为空)
<html ng-app="PostApp" class="ng-scope"><head><style type="text/css">@charset "UTF-8";[ng\:cloak],[ng-cloak],[data-ng-cloak],[x-ng-cloak],.ng-cloak,.x-ng-cloak,.ng-hide{display:none !important;}ng\:form{display:block;}.ng-animate-block-transitions{transition:0s all!important;-webkit-transition:0s all!important;}.ng-hide-add-active,.ng-hide-remove{display:block!important;}</style>
<meta http-equiv="content-type" content="text/html; charset=utf-8">
<title>Angular.js with Django</title>
</head>
<body ng-controller="PostCtrl as pc" class="ng-scope">
<h1>Welcome to Angular.JS</h1>
<!-- ngRepeat: data in datas --><div ng-repeat="data in datas" class="ng-scope">
<h3></h3>
</div><!-- end ngRepeat: data in datas --><div ng-repeat="data in datas" class="ng-scope">
<h3></h3>
</div><!-- end ngRepeat: data in datas --><div ng-repeat="data in datas" class="ng-scope">
<h3></h3>
</div><!-- end ngRepeat: data in datas -->
<script src="/static/posts/angular.js"></script>
<script src="/static/posts/app.js"></script>
</body></html>
我应该改变什么来呈现适当的 json 数据。在这种情况下 {{ data.title }} ?
【问题讨论】:
-
这个链接很有帮助。 stackoverflow.com/questions/13671701/…