【发布时间】:2013-12-05 22:56:56
【问题描述】:
是否有可能扩展淘汰映射插件以在取消映射时处理不同类型的映射?
我有这个模型:
var Model = function () {
var self = this;
self.requestFrom = ko.observable(moment().subtract("days", 1));
self.requestTo = ko.observable(moment());
// additional properties.
};
为了得到一个普通的 JavaScript 对象,我正在这样做:
var model = new Model();
var obj = mapping.toJS(model, {
"ignore": ["requestFrom", "requestTo"]
});
obj.requestFrom = model().requestFrom().toISOString();
obj.requestTo = model().requestTo().toISOString();
我想避免手动处理矩对象的转换,而是为敲除映射编写一些扩展,它知道如何处理矩类型的对象,并将它们作为它们的 ISO 字符串表示形式返回。
有什么想法吗?
【问题讨论】:
-
我知道这不是您想要的,但您可以使用带有 moment.js 的 Knockout 绑定处理程序来操作日期和时间
-
在这种情况下,这是因为我需要先将其转换为纯 JS 对象,然后才能在 AJAX 请求中使用它。
-
如果您使用绑定处理程序,那么您的可观察日期/时间的底层格式不会改变——唯一改变的是用户看到的内容。因此,每当需要回发到服务器时,您都可以执行
ko.toJS(model)或ko.toJSON(model)并将该数据发回。您的服务器将以与您检索它们相同的格式接收日期/时间
标签: javascript knockout.js knockout-mapping-plugin momentjs