Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angularjs $resolved:角度JS响应中为false_Angularjs_Django Rest Framework - Fatal编程技术网

Angularjs $resolved:角度JS响应中为false

Angularjs $resolved:角度JS响应中为false,angularjs,django-rest-framework,Angularjs,Django Rest Framework,我正在设置一个使用Django REST API的Angular JS应用程序。 我想显示教室的HTML列表。 这是我的模板 <body> <div ng-app="schoolApp" ng-controller="schoolCtrl"> <table class="table table-striped"> <thead> <tr>

我正在设置一个使用Django REST API的Angular JS应用程序。
我想显示教室的HTML列表。
这是我的模板

<body>
    <div ng-app="schoolApp" ng-controller="schoolCtrl">
        <table class="table table-striped">
            <thead>
                <tr>
                    <th>Classroom</th>
                    <th>School</th>
                    <th>Floor</th>
                    <th>Academic year</th>
                </tr>
            </thead>
            <tbody>
                <tr ng-repeat="classroom in classrooms">
                    <td>{{classroom.classroom}}</td>
                    <td>{{classroom.school.school_name}}</td>
                    <td>{{classroom.floor}}</td>
                    <td>{{classroom.academic_year}}</td>
                </tr>
            </tbody>
        </table>
    </div>
</body>
问题是,我想,我得到了-我可以在控制台中看到-,
$resolved:false

我如何解决这个问题?
更新:

考虑到我无法解决这个问题,我在想,也许我在其他方面做得很糟糕,比如。。。视图?
这就是我得到的

class HomePageView(TemplateView):
    template_name = 'school_app/base.html'

class StudentViewSet(viewsets.ModelViewSet):
    queryset = Student.objects.all()
    serializer_class = StudentSerializer


class ClassroomViewSet(viewsets.ModelViewSet):
    queryset = Classroom.objects.all()
    serializer_class = ClassroomSerializer
也许我必须在HomePageView中添加一些内容,或者用另一种方式进行设置

更新:

这是我在控制台上调试器“开”时得到的结果


实际上,整个Json响应。

当您调用$resource的查询时,它返回一个对$resolved=false的对象或数组的引用,直到RESTAPI调用完成并填充您的对象。因此,$resolved=false可能是正确的,表示您尚未收到数据

这是一个

控制器是:

app.controller('schoolCtrl', function($scope, Classroom) {
  var vm = this;
  vm.name = 'World';
   Classroom.query().$promise.then(function(data) {
     console.log('Success: '+JSON.stringify(data));
     vm.classrooms = data;

   }, function (reason) {
     console.log('ERROR: '+JSON.stringify(reason));
   });
});
这是我为调试RESTWebAPI所做的。。。通话正常后,您可以切换到更轻的版本:

app.controller('schoolCtrl', function($scope, Classroom) {
  var vm = this;
  vm.name = 'World';
  vm.classrooms = Classroom.query();
});
我创建了一个教室JSON(猜测您的格式):

以及HTML:

<body ng-controller="schoolCtrl as vm">
    <p>Hello {{vm.name}}!</p>
    <div>
        <table class="table table-striped">
            <thead>
                <tr>
                    <th>Classroom</th>
                    <th>School</th>
                    <th>Floor</th>
                    <th>Academic year</th>
                </tr>
            </thead>
            <tbody>
                <tr ng-repeat="classroom in vm.classrooms">
                    <td>{{classroom.classroom}}</td>
                    <td>{{classroom.school.school_name}}</td>
                    <td>{{classroom.floor}}</td>
                    <td>{{classroom.academic_year}}</td>
                </tr>
            </tbody>
        </table>
    </div>
  </body>
请注意,我使用var vm=this和ControllerAs语法来避免任何范围问题

关于文档中的ngResource:“重要的是要认识到调用$resource对象方法会立即返回一个空引用(对象或数组取决于isArray)。从服务器返回数据后,现有引用将填充实际数据。这是一个有用的技巧,因为通常将资源分配给模型,然后由视图进行渲染。如果对象为空,则不会进行渲染,一旦数据从服务器到达,则对象将填充数据,并且视图自动重新呈现自身,显示新数据。这意味着在大多数情况下,不必为操作方法编写回调函数。”


让我们知道这是否有帮助。

$resolved
应该由Angular自动设置为
true
,前提是您的REST API请求成功。通过与另一个客户机直接点击来检查API调用是否有效。另外,您不需要在
then()
中进一步查询,
$scope.questions=data语句应该足够了。感谢您提供的解决方案,但它无论如何都不起作用。通过在控制器上调用debuged,我在控制台中获得了所有数据——就像我以前做的那样——但是模板没有呈现数据。这可能是我在风景中错过的东西吗?我正在更新这个问题,如果你能再看一次的话。你能分享一下你在控制台上看到的吗?这将有助于发现视图中的问题。谢谢你回答这个问题。
app.controller('schoolCtrl', function($scope, Classroom) {
  var vm = this;
  vm.name = 'World';
  vm.classrooms = Classroom.query();
});
[
    {"classroom":"0", "school": {"school_name":"anc"} },
        {"classroom":"1", "school": {"school_name":"Sorbonee"} }

    ]
<body ng-controller="schoolCtrl as vm">
    <p>Hello {{vm.name}}!</p>
    <div>
        <table class="table table-striped">
            <thead>
                <tr>
                    <th>Classroom</th>
                    <th>School</th>
                    <th>Floor</th>
                    <th>Academic year</th>
                </tr>
            </thead>
            <tbody>
                <tr ng-repeat="classroom in vm.classrooms">
                    <td>{{classroom.classroom}}</td>
                    <td>{{classroom.school.school_name}}</td>
                    <td>{{classroom.floor}}</td>
                    <td>{{classroom.academic_year}}</td>
                </tr>
            </tbody>
        </table>
    </div>
  </body>
app.factory('Classroom', ['$resource', function($resource) {
    return $resource('classrooms?format=json', {}, {
        query: {
            method: 'GET',
            isArray: true,
        }
    });
}]);