2015-12-14 91 views
1

我从火力地堡中提取数据的表。表格中的每一行都有可以被点击以执行特定功能的动作。其中一个操作是简单地将该行设置为已完成。我的firebase数据库中有一个字段,其中包含truefalse的密钥,其值为read。我需要点击图标(复选标记)并根据操作更新Firebase中的值。更新领域上点击在AngularJS

我见到目前为止以下内容:

var myProducts = new Firebase('https://url-to-firebase-db/products'); 
$scope.products = $firebaseArray(myProducts); 

$scope.products = $firebaseArray(ref); 
$scope.markCompleted = function markCompleted(product) { 
    product.read = !product.read; 
    $scope.products.$save(product); 
}; 

在UI端:

<tbody ng-controller="ProductsCtrl"> 
    <tr ng-repeat="product in products | orderBy: 'category'"> 
    <td>{{ product.category}}</td> 
    <td>{{ product.task}}</td> 
    <td><img class="user" src="{{ product.user }}"></td> 
    <td>{{ product.status }}</td> 
    <td>{{ product.due | date:'MMMM dd' }}</td> 
    <td>{{ product.notes }}</td> 
    <td>{{ product.read }}<a class="fa fa-check" ng- 
          click="markCompleted(product)"></a> 
    <i class="fa fa-comment"></i> 
    <i class="fa fa-bars"></i> 
    </td> 
    </tr> 
</tbody> 

我不知道如何触发动作火力地堡更新域虽然。

回答

1

尝试创建一个发生在一个product的方法,并在您的模板指定:

<tbody ng-controller="ProductsCtrl"> 
    <tr ng-repeat="product in products | orderBy: 'category'"> 

    <td> 
     <button class="fa fa-check" ng-click="markCompleted(product)" > 
     </button> 
    </td> 

    </tr> 
</tbody> 

然后在你的控制器,你可以改变product.read值,并使用$firebaseArray保存:

$scope.products = $firebaseArray(ref); 
$scope.markCompleted = function markCompleted(product) { 
    product.read = !product.read; 
    $scope.products.$save(product); 
}; 
+0

我可以看到这是哪里,但它仍然没有推动对firebase的改变。我已经在我的原始问题中包含了额外的代码,以显示如何声明我的firebase数组。 – Matt

+0

让我看看,我会稍微举一个例子。 –

+0

你可以创建一个这个问题的解决方案吗?因为使用'$ scope.products。$ save(product);'应该可以工作。 –