我试图将4个值插入我的firebase-database(设备,类型,停机时间和停机时间结束)。停机时间值的开始和结束时间为datetime-local。当我尝试插入值时,它只会使前2个值的节点成为设备和类型。我不知道为什么它没有插入datetime-local值。
我的HTML
<div class="row">
<div class="col-xs-12">
<div class="form-group col-xs-6 col-xs-offset-3" id="equipList">
<label for="selectequ">Select Equipment</label>
<select class="form-control" id="selectequ" data-ng-model="equipment"
>
<option data-ng-repeat="eq in allEquipments" >{{eq}}</option>
</select>
{{equipment}}
</div>
<div class="form-group col-xs-6 col-sm-6 col-md-6 col-lg-6 col-xs-offset-3" id="Type">
<label for="searchType">Search by Type:</label>
<select class="form-control" id="searchType" data-ng-model="type">
<option value="" disabled="" selected="" style="display: none">Select type of maintenance</option>
<option>Corrective Maintenance</option>
<option>Preventive Maintenance</option>
<option>Standby</option>
</select>
</div>
{{type}}
</div>
</div>
<div class="row">
<div class="form-group col-xs-6 col-xs-offset-3">
<label for="date">Start of Downtime</label>
<input type="datetime-local" class="form-control" placeholder="Day, Month, Year" data-ng-model="startDT"/>
</div>
{{startDT}}
<div class="form-group col-xs-6 col-xs-offset-3">
<label for="date">End of Downtime</label>
<input type="datetime-local" class="form-control" placeholder="Day, Month, Year" data-ng-model="endDT"/>
</div>
{{endDT}}
</div>
<div class="row">
<div class="col-xs-6 col-sm-6 col-md-6 col-lg-6" id="central">
<a class="btn cd-add-to-cart cd-add-to-cart:hover cd-add-to-cart:active" role="button" data-ng-click="manageDowntime()">MANAGE <span class="glyphicon glyphicon-tasks"></span></a>
</div>
</div>
MY ANGULARJS
/*global angular*/
var app = angular.module('downtime', ['ngRoute', 'firebase']);
app.config(['$routeProvider', function ($routeProvider) {
'use strict';
$routeProvider.when('/downtime', {
templateUrl: 'downtime/downtime.html',
controller: 'downtimeCtrl'
});
}]);
app.controller('downtimeCtrl', ['$scope', '$firebaseObject', '$firebaseArray', function ($scope, $firebaseObject, $firebaseArray) {
'use strict';
$scope.allEquipments = [];
$scope.allSystems = [];
$scope.manageDowntime = function () {
var doesExist = false;
angular.forEach ($scope.data , function (d) {
angular.forEach (d.equipments, function (e) {
})
});
firebase.database().ref('downtime/' + $scope.equipment + '/downtime').child($scope.equipment).set({
equipment: $scope.equipment,
type : $scope.type,
start: $scope.startDT,
end: $scope.endDT
});
};
var ref = firebase.database().ref();
var data = ref.child("data");
var list = $firebaseArray(data);
list.$loaded().then(function(data) {
$scope.data = data;
angular.forEach ($scope.data , function (d) {
$scope.allSystems.push(d.$id);
angular.forEach (d.equipments, function (e) {
$scope.allEquipments.push(e.equipment);
console.log($scope.allEquipments);
})
});
console.log($scope.data);
}).catch(function(error) {
$scope.error = error;
});
}]);
答案 0 :(得分:1)
我希望firebase不接受date作为数据类型。因此它将它们转换为字符串并存储为datetime-local值。 See this documentation for datatypes accepted in set method。
object, array, string, number, boolean, or null // these are the datatypes which firebase will accept.
第1步:
store them as datetime-local values in firebase, while retrieving the data, push the date object.
var start_end=new Date(start);
//you will get date object, you can append this to input type date if you wish.