使用 Angularfire 保存部分数据
Saving partial data with Angularfire
您好,我有一个 angular gridster 和 angular chartjs 的设置,其中块位置和图表是从 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>
并在控制器中
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 中保存移动块的位置时。
因为几个块可以通过移动一个块来拥有新的行和列,所以我尝试将 $scope.widgets.$save 包装在一个 forEach 函数中。
并且新块位置保存良好,但生成的图表数据也是如此 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' });
您好,我有一个 angular gridster 和 angular chartjs 的设置,其中块位置和图表是从 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>
并在控制器中
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 中保存移动块的位置时。
因为几个块可以通过移动一个块来拥有新的行和列,所以我尝试将 $scope.widgets.$save 包装在一个 forEach 函数中。
并且新块位置保存良好,但生成的图表数据也是如此 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' });