使用angularfire更新字段

时间:2014-10-20 20:48:06

标签: javascript angularjs angularfire

我试图用AngularFire构建一个非常简单的迟到跟踪器。我已经让miniApp添加了工作人员,并将最初的分钟设置为0值。

但我坚持更新价值观。当用户点击'加()'当用户点击'减去()'时,它应该为值加1它应该从值中删除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');    
};

});

有人可以帮助我走上正确的轨道吗?

2 个答案:

答案 0 :(得分: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>

答案 1 :(得分:0)

好吧所以我认为这可能有助于进一步解决我认为New Dev做得很好的解决方案。

我解决这个问题的一种方法是使用输入类型=&#34;数字&#34;然后有一个保存/提交到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));
    };
}]);

我希望这会有所帮助