簡體   English   中英

如何使用KnockoutJs綁定將數據轉換為moment.js中的其他格式?

[英]How to convert date into other format in moment.js using KnockoutJs Binding?

在我的Web應用程序中,我對日期使用Bootstrap-datepicker-and-KnockoutJs綁定,如何將日期轉換成其他格式?

self.date = ko.observable(moment())
                        .extend({ required: true });

默認顯示

2015年8月6日星期四,格林尼治標准時間+0530

datepicker之后顯示

2015年8月6日星期四,格林尼治標准時間+0530(印度標准時間)

試圖將此值轉換為其他

moment(self.date, '2015-08-06T011:32:21.196Z')

表明

失效日期

在這里我使用下面的敲除綁定顯示

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);
}
};

我該怎么做,這是正確的方法嗎? 提出解決方案,謝謝

這是帶有MomentJS的KnockoutJS的自定義綁定實現

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

另一個選擇是定義ko.computed() ,它將使用時間戳作為因變量

 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]); 
 <!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> 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM