gpt4 book ai didi

angularjs - 将业务对象转换为 Angular-Meteor 中的 View 模型

转载 作者:行者123 更新时间:2023-12-02 23:02:34 24 4
gpt4 key购买 nike

背景

我有一个 angular-meteor 应用程序和 mongodb 中的业务对象集合,例如:

{ startDate: new Date(2015, 1, 1), duration: 65, value: 36 }

我想在不同的 View 中呈现这些数据。其中一个 View 是图表,另一个 View 是条目列表。条目列表很简单。只需将集合绑定(bind)到模型即可:

vm.entries = $scope.meteorCollection(MyData, false);

在我看来,我会这样做:

<div ng-repeat="entry in vm.entries">{{entry.startDate}} - ...</div>

现在来看图表。我想将每个元素转换为 { x, y } 对象并给出 View ,例如:

vm.graphPoints = transformData(getDataHere());

问题是这里没有获取数据,在 angular-meteor 中看起来像是在 View 中调用 entry in vm.entries 时获取的。关键在于 transformData 方法需要循环遍历数据,并为每个项目索引到其他项目来计算结果 x、y。因此,我无法使用简单的 forEach 循环(无法以某种方式访问​​其他项目)。

问题

那么我如何获取 Controller 中的数据 - 对其进行转换 - 并且仍然对添加到数据库中的新数据进行单向绑定(bind)(观察)?

谢谢

更新

以下代码有效,但我认为每次发生更改时获取整个集合可能会出现性能问题。

$scope.$meteorSubscribe("myData").then(function() {
$scope.$meteorAutorun(function() {
var rawData = MyData.find().fetch();
vm.model.myData = transformData(rawData);
});
});

最佳答案

编辑:
这是当前的解决方案:

$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));
});

关于angularjs - 将业务对象转换为 Angular-Meteor 中的 View 模型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30730003/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com