JSFiddle - React, Tailwind, and code Playground

by Rafal Piekarski

HTML

<body ng-app="myApp">
    <section ng-controller="AccountController">
        <ul>
            <li ng-repeat="duration in account_durations">
                <input type="text" ng-model="duration.start">
                <input type="text" ng-model="duration.end">
                <button ng-click="addDuration()">Add Line</button>
            </li>
        </ul>
        <button ng-click="saveAccount()">Save to Firebase</button>
    </section>
    {{account}}
</body>
    <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.21/angular.min.js"></script>
    <script src="https://cdn.firebase.com/js/client/1.0.18/firebase.js"></script>
    <script src="https://cdn.firebase.com/libs/angularfire/0.8.0/angularfire.min.js"></script>

JavaScript

var myApp = angular.module('myApp', ['firebase']);

myApp.controller('AccountController', ['$scope', '$firebase', '$window', function ($scope, $firebase, $window) {
    var resource_key = 'https://angularfire-problem.firebaseio.com/account',
        account_ref = new $window.Firebase(resource_key),
        durations_ref = new $window.Firebase(resource_key+'/durations');
    $scope.account = $firebase(account_ref).$asObject();
    $scope.account_durations = $firebase(durations_ref).$asArray();
    
    $scope.account.$loaded().then(function(){
        // this is for preloading data first time
        if (!$scope.account.durations) {
            $scope.account.durations = [{start: 5, end: 10}];
        }
        // this is for migrating existing data a to new structure
        if ($scope.account.durations && $scope.account.durations.length > 0) {
            angular.forEach($scope.account.durations, function(duration){
                console.log(duration);
                $scope.account_durations.$add(duration);
            });
        }
    });
    
    $scope.addDuration = function () {
        $scope.account.durations.$add({});
    };

    $scope.saveAccount = function () {
        console.log('already saved in addDuration');
        //$scope.account.$save();
    };
}]);