管理AngularJS服务中的数组

时间:2016-02-08 09:15:14

标签: javascript arrays angularjs

我在个人资料页面上有一个像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方法被调用的。所以所有喜欢都被推入阵列。

1 个答案:

答案 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工具>开发人员工具中),并查看您在网络标签中发送的内容。如果您的数组只包含一个值,则整个数组将被覆盖,除非您编写自定义更新函数来添加值而不是替换该值。