背景
我在 mongodb 中有一个 angular-meteor 应用程序和一组业务对象,例如:
{ startDate: new Date(2015, 1, 1), duration: 65, value: 36 }
我想在不同的视图中呈现这些数据。其中一个视图是图表,另一个是条目列表。条目列表很简单。只需将集合绑定到模型:
vm.entries = $scope.meteorCollection(MyData, false);
在我看来,我会这样做:
<div ng-repeat="entry in vm.entries">{{entry.startDate}} - ...</div>
但现在是图表。我想将每个元素转换为一个{ x, y }
对象并给出这样的视图,例如:
vm.graphPoints = transformData(getDataHere());
问题是这里没有获取数据,在 angular-meteor 中看起来像是entry in vm.entries
在视图中调用时获取的。更重要的是,该transformData
方法需要循环遍历数据并将每个项目索引到其他项目以计算结果 x,y。因此,我不能使用简单的 forEach 循环(没有以某种方式访问其他项目)。
问题
那么我如何在控制器中获取数据 - 对其进行转换 - 并且仍然对添加到数据库的新数据进行单向绑定(观察)?
谢谢
更新
以下代码有效,但我认为每次发生更改时获取整个集合可能会出现性能问题。
$scope.$meteorSubscribe("myData").then(function() {
$scope.$meteorAutorun(function() {
var rawData = MyData.find().fetch();
vm.model.myData = transformData(rawData);
});
});