【发布时间】:2014-02-22 20:07:42
【问题描述】:
我正在尝试从数据库中拉回 DateTime 对象(使用微风),然后尝试将格式化的日期显示为绑定,以便可以对其进行编辑并将其保存回数据库。问题是,沿着这条线的某个地方,日期失去了它们的“实体性”。我尝试使用此站点和其他站点中的自定义绑定和计算出的可观察示例,以尝试维护我所有的日期“实体性”,但似乎没有任何效果,我可以格式化日期或保存它。
这是我尝试使用的自定义绑定 sn-p 的示例:
ko.bindingHandlers.datetimevalue = {
init: function (element, valueAccessor, allBindingsAccessor) {
// Use the value binding
ko.bindingHandlers.value.init(element, valueAccessor, allBindingsAccessor);
// Provide a custom text value
var value = valueAccessor(), allBindings = allBindingsAccessor();
var dateFormat = "DD/MM/YYYY h:mm a";
var strDate = ko.utils.unwrapObservable(value);
if (strDate) {
var date = moment(strDate).format(dateFormat);
$(element).val(date);
}
else {
var date = moment(new Date()).format(dateFormat);
$(element).val(date);
}
},
update: function (element, valueAccessor, allBindingsAccessor) {
// Use the value binding
ko.bindingHandlers.value.update(element, valueAccessor, allBindingsAccessor);
// Provide a custom text value
var value = valueAccessor(), allBindings = allBindingsAccessor();
var dateFormat = "DD/MM/YYYY h:mm a";
var strDate = ko.utils.unwrapObservable(value);
if (strDate) {
var date = moment(strDate).format(dateFormat);
$(element).val(date);
}
}
};
在此示例中(取自this link),日期以指定格式显示,但不会保留回服务器。如何使用微风/时刻显示格式化日期,然后保存对此格式化日期所做的任何更改?
提前致谢,
低频率
【问题讨论】:
-
我可以热情地推荐knockoutjs.com/documentation/custom-bindings.html 上的文档(如果您还没有阅读它;)
-
我想知道你是否正确地维护了对象——即使你覆盖了 Breeze 对象的原型的值,它仍然应该保持赋予它“实体性”的东西,除非你也清除了原型.
-
我同意@pw-kad,在查看了微风文档后,我得出了结论,但由于我自己没有编码经验,我无法从任何提供官方文档(微风/淘汰网站)。在brewjs 文档中它说:“不要更改日期的一部分并期望实体更改其EntityState。它不会!您的更改可能不会被保存。”在breezejs.com/documentation/date-time。事情是我必须遗漏一些明显的东西,因为似乎没有其他人遇到这个问题:(。
标签: javascript datetime knockout.js breeze momentjs