Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何将日期从observable传递给JQuery datepicker_Jquery_Knockout.js_Jquery Ui Datepicker - Fatal编程技术网

如何将日期从observable传递给JQuery datepicker

如何将日期从observable传递给JQuery datepicker,jquery,knockout.js,jquery-ui-datepicker,Jquery,Knockout.js,Jquery Ui Datepicker,在我的应用程序中,我有一个observable,它包含jquery datepicker的最小日期。问题是,我不知道如何将该日期从javascript viewmodel代码获取到jQuery datepicker的jQuery BindingHandler。这是密码- define(['services/logger', 'durandal/system', 'plugins/router'], function (logger, system, router) {

在我的应用程序中,我有一个observable,它包含jquery datepicker的最小日期。问题是,我不知道如何将该日期从javascript viewmodel代码获取到jQuery datepicker的jQuery BindingHandler。这是密码-

 define(['services/logger', 'durandal/system', 'plugins/router'],
function (logger, system, router) {

             //GetLucasSystemDate() returns a date
             var LucasSystemDate = ko.observable(GetLucasSystemDate());

                  ko.bindingHandlers.datepicker = {
// add event handler to handle change in the datepicker element and update the viewmodel
init: function (element, valueAccessor, allBindingsAccessor) {
   var options = allBindingsAccessor().datepickerOptions || {};


              $(element).datepicker({
                changeMonth: true,
                changeYear: true,
                showButtonPanel: false,
                minDate: LucasSystemDate()
            });
 }
});
在上面的jQuery代码部分中查找LucasSystemDate。很明显,这是行不通的,但却妨碍了我的努力。如何将LucasSystemDate可观测值获取给minDate


编辑:正如Josh所建议的,我将代码移动到javascript的其余部分。然后我就可以看到耳环了。我编辑了上面的代码-

在您的情况下,您需要做的就是在您正在使用的名为
datepickerOptions的任何元素上创建一个绑定

 <input data-bind="datepicker: thisDateObservable, datepickerOptions: { minDate: new Date(LucasSystemDate) }" />


另外,您在代码中两次初始化datepicker-如果您从元素中传入选项,则不需要第一个$(元素)。datepicker({})仅在传入选项的第二个元素中。

问题似乎与作用域有关。如果没有看到所有的JavaScript和整个ViewModel,很难说。。。但是在jQuery闭包之外设置bindingHandler有什么具体原因吗?其中的所有内容都将与JavaScript的其余部分隔离。是否可以将绑定处理程序移到函数内部,然后将可观察对象移到函数外部,使它们位于同一范围内?我觉得奇怪的是,你在一个函数中有一个可观察的声明,而这个声明不是你的ViewModel。

谢谢Josh。将代码引入范围就成功了。编辑了上面的代码。没问题,很高兴我能帮上忙!