gpt4 book ai didi

javascript - 使用 Angularfire 保存部分数据

转载 作者:行者123 更新时间:2023-11-28 19:03:24 24 4
gpt4 key购买 nike

您好,我使用 Angular gridster 和 Angular Chartjs 进行了设置,其中 block 位置和图表是根据 Firebase 数据生成的。

类似这样的事情

<div gridster-item="widget" ng-repeat="widget in widgets" ng-init="getTheData(widget)">
<canvas id="line-gridster" class="chart-base" chart-type="widget.type" data="widget.data" labels="widget.labels" legend="false" series="widget.series" ></canvas>
</div>

在 Controller 中

var fire = new Firebase(FIREURL);
$scope.widgets = $firebaseArray(fire)


var getChart = {

a: function(days){
return aChartFactory.createChartData(days);
},
u: function(days){
return uChartFactory.createChartData(days);
},

}


$scope.getTheData = function(widget){

getChart[widget.data](widget.time).then(function(data){

widget.data = data[1];
widget.labels = data[0];
widget.series = data[2];

});

};

小部件的初始数据如下所示

widget.$id {
row: 1,
col: 2,
sizeX: 2,
sizeY: 2,
type: 'bar',
labels: 'labels',
data: 'a',
series: 'series',
time: 30
}

getChart 内部的工厂仅用于生成图表数据。

我遇到的问题是当我尝试保存从 gridster 移动的 block 的位置时。

因为多个 block 可以通过移动 block 来拥有新的行和列,所以我尝试将 $scope.widgets.$save 包装在 forEach 函数中。

新的 block 位置保存得很好,但生成的图表数据 widget.data、widget.labels 和 widget.series 也保存得很好。

所以我的初始设置被替换,这意味着现在图表是静态的..

我尝试将 child().set 放在 foreEach 内部,而不是只保存所需的属性,但这似乎不起作用。我想这是因为我无法在 firebase ref 上执行循环,只能在数组上执行循环,而我无法执行 .set

是否有其他方法可以为所有项目仅设置特定属性?

最佳答案

AngularFire 没有只更新对象的一部分的方法。但由于 AngularFire 是建立在 Firebase 的 JavaScript SDK 之上的,因此您可以享受它提供的所有优点。这意味着您可以使用 Firebase.update() 方法,该方法只会更新您指定的属性。

如果您有 $firebaseObject,您可以使用以下方法更新一些属性:

object.$ref().update({ key1: 'newValue1', key7: 'newValue2' });

关于javascript - 使用 Angularfire 保存部分数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32137523/

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