Knockoutjs 中的 Bootstrap DatePicker 绑定



>我正在使用引导日期选择器并在 asp.net mvc 应用程序中使用 knockoutjs 绑定选定的日期

挖空绑定:

ko.bindingHandlers.datepicker = {
      init: function(element, valueAccessor, allBindingsAccessor) {
          //initialize datepicker with some optional options
          var options = allBindingsAccessor().datepickerOptions || {
              useCurrent: false,
              format: 'mm/dd/yyyy'
          };
          $(element).datepicker(options);
          //when a user changes the date, update the view model
          ko.utils.registerEventHandler(element, "changeDate", function(event) {
               var value = valueAccessor();
               if (ko.isObservable(value)) {
                   value(event.date);
               }
          });
      },
      update: function(element, valueAccessor) {
          var widget = $(element).data("datepicker");
          //when the view model is updated, update the widget
          if (widget) {
              widget.date = ko.utils.unwrapObservable(valueAccessor());
              widget.setValue();
          }
      }
 };
 var model = {
    StartDate: ko.observable(),
    EndDate: ko.observable()
 };
 ko.applyBindings(model, $("#target")[0]);

我所做的事情的Jsfiddle。

现在,完成表单后,表单使用 ajax post 提交到服务器。

返回时,我想清除选定的开始和结束日期输入字段。

我试过这个:

self.StartDate(null);
self.EndDate(null);

这将清除属性,但输入仍保留所选日期。有没有办法不仅清除属性,还清除输入值?

此外,在挖空自定义绑定 init 函数中,有没有办法链接两个日期输入以使其成为一个范围,就像这里的演示一样?在演示中,当选择"范围"单选按钮时,但字段作为一个范围协同工作。

看起来您正在使用此引导日期选择器,并且在绑定器update函数中清除(或通过 KO 设置任何日期)时将小部件日期设置为 KO 日期的 API 调用不正确。

这有效(请参阅 JSFiddle):

$(element).datepicker("update", ko.utils.unwrapObservable(valueAccessor()));

遵循 Kasperoo 建议:

更改此设置:

  update: function(element, valueAccessor) {
        var widget = $(element).data("datepicker");
        if (widget) {
           widget.date = ko.utils.unwrapObservable(valueAccessor());
           widget.setValue();
        }
  }

  update: function(element, valueAccessor) {
        var value = ko.utils.unwrapObservable(valueAccessor());
        $(element).val(value);
  }

帮助清除服务器回发时的字段。

最新更新