2015-12-14 45 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);'應該可以工作。 –