首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何使用KnockoutJs绑定将日期转换为moment.js中的其他格式?

如何使用KnockoutJs绑定将日期转换为moment.js中的其他格式?
EN

Stack Overflow用户
提问于 2015-08-06 06:52:16
回答 1查看 1.6K关注 0票数 1

在我的web应用程序中,我使用Bootstrap和-KnockoutJs绑定日期,如何将日期转换成其他格式?

代码语言:javascript
复制
self.date = ko.observable(moment())
                        .extend({ required: true });

默认显示

2015年8月6日清华11:59:21 GMT+0530

数据采集后,它显示

清华2015年8月6日05:30:00 GMT+0530 (印度标准时间)

试图将此值转换为

代码语言:javascript
复制
moment(self.date, '2015-08-06T011:32:21.196Z')

它显示了

无效日期

在这里,我使用了下面的淘汰制绑定

代码语言:javascript
复制
ko.bindingHandlers.datepicker = {
init: function (element, valueAccessor, allBindingsAccessor) {
    var options = allBindingsAccessor().datepickerOptions || {};
    $(element).datepicker(options).on("changeDate", function (ev) {
        var observable = valueAccessor();
        observable(ev.date);
    });
},
update: function (element, valueAccessor) {
    var value = ko.utils.unwrapObservable(valueAccessor());
    $(element).datepicker("setValue", value);
}
};

我是怎么做到的,这是个合适的方法吗?提出一个解决办法,谢谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-08-06 07:05:53

下面是KnockoutJS与MomentJS的自定义绑定实现

https://github.com/adrotec/knockout-date-bindings

另一个选项是定义ko.computed(),它将时间戳用作因变量。

代码语言:javascript
复制
var Vm = function() {
      var self = this;
      
      self.date = ko.observable();
      self.dateFormatted = ko.computed(function() {
        return moment(self.date()).format("DD/MM/YYYY HH:mm:ss")
      });
      
      setInterval(function() {
        self.date(new Date());
      }, 1000);
    };
    
    var vm = new Vm();
    ko.applyBindings(vm, $("body")[0]);
代码语言:javascript
复制
<!DOCTYPE html>
<html>

  <head>
    <script data-require="jquery@2.1.3" data-semver="2.1.3" src="http://code.jquery.com/jquery-2.1.3.min.js"></script>
    <script data-require="knockout@3.3.0" data-semver="3.3.0" src="//cdnjs.cloudflare.com/ajax/libs/knockout/3.3.0/knockout-min.js"></script>
    <script data-require="moment.js@2.10.2" data-semver="2.10.2" src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.10.2/moment.min.js"></script>
    <link rel="stylesheet" href="style.css" />
    <script src="script.js"></script>
  </head>

  <body>
    <h1 data-bind="text: dateFormatted"></h1>
    <script>
    var Vm = function() {
      var self = this;
      
      self.date = ko.observable();
      self.dateFormatted = ko.computed(function() {
        return moment(self.date()).format("DD/MM/YYYY HH:mm:ss")
      });
      
      setInterval(function() {
        self.date(new Date());
      }, 1000);
    };
    
    var vm = new Vm();
    ko.applyBindings(vm, $("body")[0]);
  </script>
  </body>

</html>

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31848703

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档