【发布时间】:2015-10-24 00:30:33
【问题描述】:
我正在使用 Angular Meteor,但我的对象/数组有问题。我有这个代码:
angular.module("learn").controller("CurriculumDetailController", ['$scope', '$stateParams', '$meteor',
function($scope, $stateParams, $meteor){
$scope.curriculum = $meteor.object(CurriculumList, $stateParams.curriculumId);
$scope.resources = _.map($scope.curriculum.resources, function(obj) {
return ResourceList.findOne({_id:obj._id})
});
console.log($scope.resources)
}]);
我正在尝试遍历 'resources',它是课程对象中的一个嵌套数组,查找 'ResourceList' 集合中的每个值,并返回范围内的新数组。
问题是,有时有效,有时无效。当我加载页面并通过 UI 路由器链接访问它时。我得到了预期的数组。但是如果页面被刷新,$scope.resources 是一个空数组。
我的想法是异步调用发生了一些事情,但无法找到解决方案。我仍然安装了自动发布包。任何帮助将不胜感激。
【问题讨论】:
-
在气氛中查看publish composites,您将能够在服务器端完成这一切并节省很多问题。如果你想要一个演示,我会把它写下来作为答案。您在这里遇到的问题是角度和页面正确刷新控制器的问题。
-
我看看哪里可以拿这个,谢谢指点。
-
@TjGienger。谢谢你的建议。看起来这可以做我需要的,但我不知道如何完成它。在示例中,他们使用 find 返回一个游标(例如,有多个帖子)。然后他们遍历这些并做他们想做的事。相比之下,我正在寻找 findOne 然后遍历该文档中的嵌套字段,将每个字段映射到另一个集合中的文档。有没有办法用发布复合包做到这一点?演示会很棒。谢谢。
标签: angular-meteor