Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/449.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何使用AngularJS处理数据库中的日期_Javascript_Angularjs - Fatal编程技术网

Javascript 如何使用AngularJS处理数据库中的日期

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":

我正在从SQLite获取数据,并将其分配给我的$scope.loans:

{
    "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您可以为您的表查找一个解决方案