Javascript 如何使用AngularJS处理数据库中的日期
我正在从SQLite获取数据,并将其分配给我的$scope.loans:Javascript 如何使用AngularJS处理数据库中的日期,javascript,angularjs,Javascript,Angularjs,我正在从SQLite获取数据,并将其分配给我的$scope.loans: { "id": 1, "book_id": 2, "patron_id": 3, "loaned_on": "2016-12-28", "return_by": "2017-01-25", "returned_on":
{
"id": 1,
"book_id": 2,
"patron_id": 3,
"loaned_on": "2016-12-28",
"return_by": "2017-01-25",
"returned_on": "2017-01-17",
}
{
"id": 2,
"book_id": 3,
"patron_id": 4,
"loaned_on": "2016-12-28",
"return_by": "2017-01-25",
"returned_on": null,
}
在我看来,我正试图将数据绑定到输入标记中,以便用户可以编辑和提交更改(我使用的是pug模板引擎)
现在我得到一个AngularJS错误,说ngModel不是日期对象。我知道我应该使用日期构造函数将日期字符串转换为日期对象,但我的问题是,做这件事的最佳方法是什么 解决方案 我想也许我会找到更好的方法,但我没有。
因此,我循环遍历loans数组,并为每个日期字符串指定一个日期对象。创建日期 如果您的日期是此ISO 8601表单中的日期,则只需使用默认构造函数
Date
new Date("2017-01-25")
如果您希望对日期进行一些计算,或者希望以其他格式传递日期,我建议使用:
将其传递给范围 将
日期
传递给HTML的最简单方法是在scope函数中传递它。通过这种方式,您可以简单地在HTML中调用它
控制器(带日期构造函数):
$scope.createDate = function(dateString) {
return new Date(dateString);
};
$scope.createDate = function(dateString) {
return moment("2017-01-25", "YYYY-MM-DD");
};
控制器(带有moment.js
):
$scope.createDate = function(dateString) {
return new Date(dateString);
};
$scope.createDate = function(dateString) {
return moment("2017-01-25", "YYYY-MM-DD");
};
HTML(哈巴狗模板):
td(type='date' ng-model='createDate(loan.loaned_on)' value='{{loan.loaned_on}}')
你可以这样做,这是简单的和内联的
td(type='date' ng-model='new Date(loan.loaned_on)' value='{{loan.loaned_on}}')
您将输入类型指定为
日期
,但您将日期字符串指定给模型
,而模型
不需要该字符串。相反,请将该值转换为日期对象并按如下所示分配:
tbody
tr(ng-repeat='loan in loans')
td(type='date' ng-model='loan.loaned_on' value='{{new Date(loan.loaned_on)}}')
试试这个:
$scope.createDate = function(dateString) {
return new Date(dateString);
};
$scope.createDate = function(dateString) {
return moment("2017-01-25", "YYYY-MM-DD");
};
var myApp=angular.module('myApp',[]);
myApp.controller('MyCtrl',函数($scope){
$scope.loans=[{
“id”:1,
“图书编号”:2,
“用户id”:3,
“贷款日”:“2016-12-28”,
“返回人”:“2017-01-25”,
“返回日期”:“2017-01-17”
},
{
“id”:2,
“图书编号”:3,
“用户id”:4,
“贷款日”:“2016-12-28”,
“返回人”:“2017-01-25”,
“返回打开”:空
}];
});代码>
借出
返回
返回
输入值不是问题所在,ng模型要求模态为日期对象。你不能在里面传递一个函数。你不能传递一个函数,而是传递这个函数的返回值,它是一个Date
对象。您只需要执行表达式。如果createDate(loan.loaned_on)
作为字符串传递,请尝试ng model={{{createDate(loan.loaned_on)}}}
youloking for a smart table and have solution您可以为您的表查找一个解决方案