knockoutJS,requireJS和jQueryUI Datepicker不能一起玩

时间:2013-09-05 20:44:10

标签: javascript jquery-ui knockout.js datepicker requirejs

我正在尝试使用jquery-ui Datepicker创建一个自定义的knockoutJS绑定,如下所示: http://jsfiddle.net/rniemeyer/X82aC/ jQuery UI datepicker change event not caught by KnockoutJS

我在实现requireJS之后没有运气,我在本文档中的两个示例之后尝试建模:(目前使用后面的示例) http://knockoutjs.com/documentation/amd-loading.html

没有错误,但是在进行Datepicker选择后,我的可观察日期没有更新。这是一个实时网址示例(尝试左上角的“开始日期”输入): http://www.nealgist.com/stackoverflow/reporting_0_4_3

define(['plugins/knockout','datepicker'], function(ko) {
  return function appViewModel(){
    ...
    this.startDate = ko.observable(new Date());
  }
}

define(['plugins/knockout'], function(ko) {
  ko.bindingHandlers.datePicker = { ... }
}

的index.html:

<input type="text" data-bind="datepicker:$root.startDate" />

如果你有任何想法,我真的可以使用一些帮助,谢谢你提前!!

1 个答案:

答案 0 :(得分:2)

我最好的猜测是在Knockout之前没有加载jQuery。如果在KO最初加载时jQuery可用,那么Knockout将使用它进行事件绑定。如果其他库使用jQuery来触发事件,但是KO不使用jQuery绑定到事件,那么处理程序将不会被执行。

因此,您需要确保首先加载jQuery。如果必须,您可以将其添加到您的配置中:

 shim: {
        'knockout': {
            deps: [ 'jquery'],
        }
 }