我尝试显示我从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')
};
}]);
答案 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;
});
};