我正在开发一个联系簿应用程序,可以在其中包含成员的组。会员有姓名,职务和电子邮件,但这并不重要。我有跟随控制器,其中包含所有组的array
,以及我正在处理的组的索引。此外,还有一个函数可以将成员添加到特定组,如下所示:
groupControllers.controller('MemberGroupController', ['$scope', '$firebaseArray', '$routeParams', '$location', '$routeParams', function($scope, $firebaseArray, $routeParams, $location, $routeParams) {
$scope.groups = $firebaseArray(ref);
$scope.whichGroup = $routeParams.groupId;
this.addToGroup = function(member){
$scope.groups[$scope.whichGroup].members.push(member);
$scope.groups[$scope.whichGroup].members.$save();
};
}]);
我知道addToGroup函数正在获取成员,因为它将正确的成员记录到控制台。出于某种原因,当我这样做时,实际上并没有将成员添加到firebase
。谢谢!
答案 0 :(得分:0)
您只需在$save
个实例上调用$firebaseObject
即可。实际上,对$save
的调用可能会破坏事情,因为它会在push
和$save
之间触发潜在的竞争条件。
这将有效:
groupControllers.controller('MemberGroupController', ['$scope', '$firebaseArray', '$routeParams', '$location', '$routeParams', function($scope, $firebaseArray, $routeParams, $location, $routeParams) {
$scope.groups = $firebaseArray(ref);
$scope.whichGroup = $routeParams.groupId;
this.addToGroup = function(member){
ref.child('groups').child($scope.whichGroup).child('members').push(member);
};
}]);
请注意,您似乎正在构建一个所谓的" nest",一个看似直观的层次结构,但会限制您的界限。阅读Firebase documentation on structuring data部分以了解有关此内容的更多信息。
考虑将群组成员与其他元数据分开:
groups
-Jy32724372
name: "Group 1"
-Jy46728671
name: "Group 2"
groups_members:
-Jy32724372
twitter:3247423678
email:23478101
anonymous:23054389
-Jy46728671
email:23478101
anonymous:45764357
答案 1 :(得分:0)
在firebase对象上调用$ save方法,将本地更改推送到firebase。查看以下AngularFire $ save指南: https://www.firebase.com/docs/web/libraries/angular/guide/synchronized-objects.html#section-api-summary
查看$ save方法指南。希望,这有助于!!!