【问题标题】:Angular copy a unix date to an angular/js dateAngular 将 unix 日期复制到 angular/js 日期
【发布时间】:2017-08-29 11:27:14
【问题描述】:

当用户单击按钮时,我希望它将 vm.checkin(unix 日期)复制到 angular type=date 字段。

<input type="date" ng-model="vm.receiptForm.paidDate" id="receiptPaidDate">
<button ng-click="vm.receiptForm.paidDate = (vm.checkin * 1000) | date:'yyyy-MM-dd HH:mm:ss Z'">
    <span class="size-tiny">Copy Date</span>
</button>

这可能吗?我似乎无法让它工作。

【问题讨论】:

  • 什么是 vm.checkin?

标签: javascript angularjs


【解决方案1】:

input[type=date] 的模型必须始终为Date object,但date filter 根据提供的格式将date 格式化为string。您只需将时间戳转换为here 所述的日期,然后将其分配给vm.receiptForm.paidDate

更新:作为一个选项,您可以创建custom filter 以实现所需的功能,请参见下面的代码 sn-p:

var module = angular.module("demo", []);

module.filter('tsToDate', function () {
    return function (timestamp) {
        return new Date(timestamp);
    };
});

module.controller('Demo', [function Demo() {
    var vm = this; 
    vm.checkin = 1529442000000;  
    vm.receiptForm = {
        paidDate: ''
    };
}]);
<script src="//ajax.googleapis.com/ajax/libs/angularjs/1.6.4/angular.min.js"></script>
<div ng-app="demo" ng-controller="Demo as vm">   
    <div>
        <button ng-click="vm.receiptForm.paidDate = (vm.checkin | tsToDate)">Copy Date</button>
    </div>        
    <input type="date" ng-model="vm.receiptForm.paidDate" />    
    <code>
        {{ vm.receiptForm }}
    </code>  
</div>

【讨论】:

  • 啊,所以没有办法在 html 页面中进行操作?一定要在控制器里做吗?
  • @torbenrudgaard 是的,您可以在控制器中执行此操作。或者,您可以使用 custom converters 创建一个指令,允许 input[type=date] 使用 unix 时间戳 something like this could work for you
  • @torbenrudgaard 还添加了一个使用自定义过滤器的示例
猜你喜欢
  • 1970-01-01
  • 2019-08-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多