AngularFire:如何将数据绑定到$ scope?

时间:2015-12-17 20:53:12

标签: angularjs mongodb firebase angularfire

我正在尝试学习Firebase,并发现MongoDB和Firebase不同。 :-)

要制作一个简单的“喜欢”计数器,我在视图中有:

<span>Likes: {{post.likes}}</span>
<form ng-submit="upLike(post)">
  <input type="submit" value="Up"></input>
</form>

在MongoDB中,这个控制器可以工作:

$scope.upLike = function(post) {
  console.log("Liked!");
  var likes = post.likes || 0;
  post.likes += 1;
  $http.put('http://localhost:8080/api/blogDB/' + post._id, post).then(function(response) { // UPDATE
    console.log("Upliked.");
  }, function(response) {
    console.log("Invalid URL");
  });
}

$scope.posts是一个数组。 post是数组中的对象。 MongoDB从对象(_id)中提取post,然后使用新数据更新集合(posts)中的记录。

使用Firebase我无法$http.put。相反,我必须将新数据绑定到$ scope,它将绑定到Firebase。

app.controller('ShowController', ['$scope', '$firebaseArray',
function($scope, $firebaseArray) {

  var ref = new Firebase("https://my-firebase.firebaseio.com/");
  $scope.posts = $firebaseArray(ref);

  $scope.upLike = function(post) {
    console.log("Liked!");
    var likes = post.likes || 0;
    post.likes += 1;
    // What goes here instead of $http.put?
  }

$scope.post.likes += 1;不起作用,因为post不是$scope上的数组。

$scope.posts.likes += 1;不起作用,因为我没有确定哪个帖子有类似内容。

我应该使用ng-click代替ng-submit吗?我可以使视图增量喜欢,但我不知道如何将此数据附加到$ scope。我应该用ng-model做什么吗?

1 个答案:

答案 0 :(得分:2)

我相信您要致电的$scope.upLike功能$firebaseArray.$save(recordOrIndex)

$scope.upLike = function(post) {
    post.likes += 1;
    $scope.posts.$save(post);
};

如果您使用$firebaseObject,则可以拨打object.$save()

编辑:是的,您也应该使用ng-click代替ng-submit。当您一次收集多个输入时,或者当您想要利用Angular的表单验证时,您只需要一个表单。否则按钮就可以了。