ng-repeat不使用resolve属性检索的数据集

时间:2016-02-23 12:55:04

标签: angularjs

我尝试显示我从resolve属性获取的数据集中的所有元素。

这:

Cours : {{courses}}

显示:

Cours : {"courses":[{"_id":"56cb521b83fcd7c023ee041f","code":"12345","name":"Test3","professor":"MonsieurX","courseContentGrade":1,"courseTeachingGrade":3,"courseAverage":2,"__v":1,"reviews":["56cb54bebd9861f004973dcb"]},{"_id":"56cb57c9e01f4a340988c6c0","code":"123456789","name":"SuperCours","courseContentGrade":7,"courseTeachingGrade":9,"__v":1,"reviews":["56cb5869e01f4a340988c6c1"]},{"_id":"56cb58f7e0f29d54251e328b","code":"123456789","name":"SuperCours","courseContentGrade":7,"courseTeachingGrade":9,"__v":1,"reviews":["56cb592ce0f29d54251e328c"]}]}

但这不起作用:

<div ng-repeat="course in courses">
  {{course.name}}
</div>

以下是我的resolve属性中的代码:

    controller: 'MainCtrl',
    resolve: {
        coursePromise: ['courses', function (courses){
            return courses.getCourses();
        }]
    }

来自服务课程的getCourses()函数:

o.getCourses = function () {
    return $http.get('/courses').success(function (data){
        angular.copy(data, o.courses);
    });
};

我真的不知道从哪里开始。谢谢你的帮助!

编辑:

这是我控制器中的代码,非常简单:

angular.module('CMT.MainCtrl', []).controller('MainCtrl', [
'$scope', 'courses', '$location',
function($scope, courses, $location){

  $scope.courses = courses;


    $scope.go = function(){
        $location.path('/cours/reviews')
    };

}]);

1 个答案:

答案 0 :(得分:0)

您的范围变量courses是一个对象,而不是一个数组。

此对象具有包含所需数组的属性courses

所以你可以在视图中做到

<div ng-repeat="course in courses.courses">
  {{course.name}}
</div>

我认为你真正想做的是修复服务以返回o.courses。 不推荐使用success,您应该习惯使用then()作为承诺链的一部分。

o.getCourses = function () {
    return $http.get('/courses').then(function (response){
        var data = response.data;
        angular.copy(data.courses, o.courses);
        return o.courses;
    });
};