我在个人资料页面上有一个像Button,点击Like按钮我想维护一个类似的数组并将其存储到我的数据库中。
在配置文件控制器中我有
$scope.likeProfile = UserService.likeProfile(loggedInUser,$state.params.userId);
在用户服务中我有
function likeProfile(likedBy,id){
var likeArray = [];
likeArray.push(likedBy);
ref.child("users").child(id).update({ likedBy: likeArray});
}
我只想了解我是如何无法初始化likeArray everyTime LikeProfile方法被调用的。所以所有喜欢都被推入阵列。
答案 0 :(得分:0)
我会这样做,但不确定这是否是你想要实现的目标。如果要保留结果,则不应在函数内进行初始化。这使结果保持在一个用户的范围内。
$scope.likeArray = [];
function likeProfile (likedBy, id) {
$scope.likeArray.push(likedBy);
ref.child("users").child(id).update({ likedBy: likeArray});
}
否则,如果您需要整体喜欢,则必须使用函数中的先前值初始化数组,sth。喜欢
likeArray = getLikesFromDB(); // however you access your db
likeArray.push(likedBy);
ref.child("users").child(id).update({ likedBy: likeArray });
尝试使用浏览器开发工具进行调试(例如,在Chrome工具>开发人员工具中),并查看您在网络标签中发送的内容。如果您的数组只包含一个值,则整个数组将被覆盖,除非您编写自定义更新函数来添加值而不是替换该值。