Javascript Can';不要使用RESTAPI

Javascript Can';不要使用RESTAPI,javascript,angularjs,rest,django-rest-framework,Javascript,Angularjs,Rest,Django Rest Framework,我使用Django Rest框架设置了一个简单的RESTful API,我正在尝试使用AngularJS来使用它。我已经阅读了angular中关于控制器和资源的内容,并且正在学习多个教程,但由于模板中的某些原因,我似乎无法正确访问JSON app.js var blogApp = angular.module('blogApp', ['ngResource']); blogApp.factory('Post', ['$resource', function($resource) { r

我使用Django Rest框架设置了一个简单的RESTful API,我正在尝试使用AngularJS来使用它。我已经阅读了angular中关于控制器和资源的内容,并且正在学习多个教程,但由于模板中的某些原因,我似乎无法正确访问JSON

app.js

var blogApp = angular.module('blogApp', ['ngResource']);

blogApp.factory('Post', ['$resource', function($resource) {
    return $resource('/api/posts/:slug/', { slug:'@slug'});
}]);

blogApp.controller('postController', ['$scope', 'Post', function($scope, Post) {
    $scope.posts = []

    Post.query().$promise.then(function(posts) {
        $scope.posts = posts;
        for (key in posts){
            console.log(posts[key]);
        }
    });
}]);
index.html ****编辑****我在这里添加了要测试的过滤器,它确实按照预期进行了过滤,但在
中仍然没有显示任何文本

<div class="container">
   <div class="col-sm-10">

      <div ng-controller="postController">
         <input type="text" ng-model="textTest">

         <div class="well" ng-repeat="(key, post) in posts | filter: textTest">
            <h1>{{ post.title }}</h1>
            {{ post.content }}
         </div>
      </div>

   </div>
</div>
在模板中,显示的只是一个空白的灰色框(因为bootstrap类),没有来自帖子的标题或内容,但是对于帖子对象的数量,确实显示了适当数量的框。我错过了什么

编辑:控制台没有显示错误,GET请求返回200 application/json。我有一个console.log($scope.posts),它正在打印出
[资源,资源,资源,资源,资源,资源,$promise:Object,$resolved:true]
。而且

for (key in $scope.posts){
   console.log(posts[key]);
}
打印出来

Resource {url: "http://localhost:8000/api/posts/i-had-a-api-his-name-was-bingo/", id: 0, title: "I had a api... his name was Bingo", content: "E-I-E-I-O", owner: "Heather"…}

您需要放置$scope.$apply(),因为这是一个异步调用

这可能会起作用

blogApp.controller('postController', ['$scope', 'Post', function($scope, Post) {
    $scope.posts = []

    Post.query().$promise.then(function(posts) {
        $scope.posts = posts;
        $scope.$apply();
    });
}]);

答案简单得令人沮丧。因为我在API中使用django rest框架,而django在默认情况下对其变量使用双大括号,所以它变得很混乱。我只需要更改分隔符

var blogApp = angular.module('blogApp', ['ngResource'], function($interpolateProvider) {
    $interpolateProvider.startSymbol('[[');
     $interpolateProvider.endSymbol(']]');
});

然后在我的模板中,使用“[[]]”作为角度变量。(例如
[[post.title]

您在控制台中看到了什么?使用DevTools->Network->filter XHR并查看返回的内容我是否要将其添加到控制器的末尾?将其添加到正在检索数据的位置。此命令用于更新作用域。更新scope属性时,需要将其应用于范围。在成功检索请求并使用新数据设置scope属性后,将其放入承诺中。它没有帮助,只是引入了$rootScope错误。Angular说该操作已经在进行中。看起来您需要添加$settimeout根据该博客查看这篇文章,$http wrapps$apply所以不需要,$resource是$http的包装器。所以这应该不是必需的,对吗?当我添加apply时,我从angular中得到$rootScope错误。它说它已经在进行中了。简而言之,它不能解决我的问题。
var blogApp = angular.module('blogApp', ['ngResource'], function($interpolateProvider) {
    $interpolateProvider.startSymbol('[[');
     $interpolateProvider.endSymbol(']]');
});