我有一个场景,在我的提醒按钮单击的警报窗口中,我在文本框中更改日期(datepicker)时,TextBox中所选日期显示错误。
初始按钮单击,您可以在警报中看到输出,但稍后如果您更改日期,您将获得与第一个实例相同的日期。可观察的没有得到刷新
小提琴链接: :
http://jsfiddle.net/JL26Z/24/
非常感谢任何解决方法
答案 0 :(得分:1)
你遇到的主要问题是你没有在值变化中添加任何回调,所以没有任何方法可以更新observable - 因为它内部的值不会改变。下面是我之前在我的一个项目中使用过的datepicker
绑定处理程序。它很小很简单,但应该做的工作:
(function ($, ko) {
ko.bindingHandlers.datepicker = {
init: function (element, valueAccessor, allBindingsAccessor) {
// initialize datePicker with options (not required)
var options = allBindingsAccessor().datepickerOptions || {};
$(element).datepicker(options);
// change date handler
ko.utils.registerEventHandler(element, "change", function () {
var observable = valueAccessor();
observable($(element).datepicker("getDate"));
});
},
update: function (element, valueAccessor) {
// update date value
var value = ko.utils.unwrapObservable(valueAccessor());
$(element).datepicker("setDate", value);
}
}
})(jQuery, ko);
重要提示:它适用于日期,而不是字符串。因此,在您的视图模型中,您应该使用日期,如下所示:
...
self.Date = ko.observable(new Date('2014-06-03T00:00:00'));//before formatting
...
现在标记应如下所示:
<input type="text" data-bind="datepicker: Date" />
你也可以像这样添加datepicker选项:
<input type="text" data-bind="datepicker: Date, datepickerOptions: {...}" />
这是完整的工作demo。
答案 1 :(得分:0)
您正在尝试从可观察函数获取日期,而不是数组
试试这个。
它会告诉你时间
alert(self.PhoneList()[0].Date());
在这种情况下,我们从可观察数组获取数组并显示第一项Date属性