2014-10-20 52 views
0

我試圖用AngularFire構建一個非常簡單的遲到跟蹤器。我已經將miniApp添加到了工作人員中,並將最初的遲到分鐘設置爲0。用angularfire更新字段

但我堅持更新值。當用戶點擊'plus()'時,它應該爲該值加1,當用戶單擊'minus()'時,它應該從該值中刪除1,最後當您單擊'resetMins()'時,它應該將該值設置回0

查看:

<div class="row"> 

<div class="col-sm-4" ng-repeat="late in lateness"> 
    <h1>{{late.name}}</h1> 
    <h2>{{late.mins}}</h2> 
    <span>Mins Lateness</span> 
    <div ng-show-auth=""> 
     <button ng-click="minus()" name="minus">-</button> 
     <button ng-click="plus()" name="plus">+</button> 
     <div> 
      <button ng-click="resetMins()">Reset</button> 
     </div> 
    </div> 
</div> 

控制器:

angular.module('goskirmishApp').controller('MainCtrl', function ($scope, fbutil, $timeout) { 

// synchronize a read-only, synchronized array of messages, limit to most recent 10 
$scope.lateness = fbutil.syncArray('lateness', {}); 

// display any errors 
$scope.lateness.$loaded().catch(alert); 

function alert(msg) { 
    $scope.err = msg; 
    $timeout(function() { 
    $scope.err = null; 
    }, 5000); 
} 

// Reset mins 
$scope.resetMins = function() { 
    console.log('reset Clicked'); 
}; 

$scope.minus = function() { 
    console.log('minus Clicked');  
}; 

$scope.plus = function() { 
    console.log('plus Clicked');  
}; 

}); 

有人可以幫助我在正確的軌道上得到嗎?

回答

0

你可以通過late到您的控制器功能:

<div ng-repeat="late in lateness"> 
    ... 
    <button ng-click="minus(late)" name="minus">-</button> 
    <button ng-click="plus(late)" name="plus">+</button> 
</div> 

,並在你的控制器:

$scope.minus = function(lateObj) { 
    lateObj.mins--;  
}; 

或者你可以這樣做在線:

<button ng-click="late.mins++" name="minus">-</button> 
+0

由於新開發,在DOM的第一個作品,但不提交/保存新的價值火力 – 2014-10-20 22:36:13

+0

能你是否添加了你需要的任何代碼來保存你遲到的對象?這似乎是一個正交的問題。 – 2014-10-20 23:11:55

+0

是的,這是問題的一部分。我不知道如何告訴firebase如何更新當前記錄。 – 2014-10-21 05:47:52

0

行,所以我認爲這可能有助於進一步解決我認爲New Dev做得很好的解決方案。

我解決這個問題的一種方法是使用input type =「number」,然後有一個按鈕將保存/提交給firebase。

這裏是一個使用你的情況的例子。

<div ng-repeat="late in lateness"> 
    {{late.name}} 
    <input ng-model="late.number" type="number" min="0"> 
    <button ng-click="save()" name="save">save</button> 
</div> 

把你的JS

app.constant('FIREBASE_URI', 'https://YOURAPP.firebaseio.com'); 

app.controller('Late', ['$scope', '$firebase', 'FIREBASE_URI', function ($scope, $firebase, FIREBASE_URI) { 
    var Lateref = new Firebase(FIREBASE_URI + "/LateWorkers"); 
    var Latesync = $firebase(Lateref); 
    $scope.LateList = Latesync.$asArray(); 

    $scope.save = function() { 
     $scope.LateList.$add(angular.copy($scope.Late)); 
    }; 
}]); 

我希望這有助於