我创建了一个forEach循环。我可以使用此循环从Firebase访问数据,我可以更改变量。但我无法在Firebase上保存这些更改。如何保存这些更改?这是我的代码:
var posts = $firebaseArray(ref);
posts.$loaded().then(function(item){
item.forEach(function(childSnapshot){
var num = childSnapshot.point-1;
childSnapshot.lastPoint = num;
});
});
答案 0 :(得分:1)
您正在使用AngularFire framework,它会在Firebase的常规JavaScript SDK之上构建UI绑定。您应该只将它用于您绑定到Angular UI元素的内容。对于其他所有事情,您最好使用Firebase's regular JavaScript SDK。
如果我正确理解您的要求,您将尝试遍历数据库位置中的所有子节点并修改属性。如果是这样的话:
function displayFile($entry) {
$imgPath = "./img/path/";
$entry = implode('/', explode('../', $entry));
$path = $imgPath.$entry;
switch(true) {
case is_file($path) :
return $path;
break;
case (is_dir($path) AND !is_file($path)) :
$files = array_filter(glob($path."/*"), 'is_file');
if(!empty($files)) {
return $path . basename(array_values($files)[0]);
}
break;
}
return $imgPath . 'paw.png';
}
Firebase文档的相关部分位于reading data once和updating data。
由于AngularFire构建于Firebase的JavaScript SDK之上,因此它们可以完美地协同工作。因此,如果您在其他地方将帖子绑定到范围(ref.once('value', function(snapshot) {
snapshot.forEach(function(childSnapshot) {
var child = childSnapshot.val();
childSnapshot.ref().update({ lastPoint: child.point - 1 });
});
});
),则在使用上述代码段更新最后一个点时,它们将自动更新。
答案 1 :(得分:0)
您可以创建包含getter和setter的服务。它看起来像这样;
angular.module('app').factory("DataHandler",
function() {
var data;
return {
get: function() {
return data;
},
set: function(something) {
data = something;
}
}
}
);
然后在你的代码中你会打电话:
var posts = $firebaseArray(ref);
posts.$loaded().then(function(item){
item.forEach(function(childSnapshot){
var num = childSnapshot.point-1;
childSnapshot.lastPoint = num;
DataHandler.set(childSnapshot);
});
});
然后,只要您需要获取该数据,只需致电:
Datahandler.get();