我在mongodb中有一个角度流星应用程序和一组业务对象,例如:
{ 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());
问题是这里没有提取数据,在角度流星看起来就像是在视图中调用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);
});
});
答案 0 :(得分:1)
编辑:
这是目前的解决方案:
$scope.collectionData = $scope.meteorCollection(MyData, false);
$meteor.autorun($scope, function() {
vm.graphPoints = transformData($scope.collectionData.fetch());
});
有一些缺失的信息。你不想在客户端有某种模型对象吗?如果这是正确的,我认为你必须做这样的事情:
$meteor.autorun($scope, function() {
vm.graphPoints = transformData($scope.meteorCollection(MyData, false));
});
答案 1 :(得分:1)
如何使用Collection Helper Meteor包添加功能: https://github.com/dburles/meteor-collection-helpers/ ?