Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/14.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
Asp.net mvc 用jQueryUI日期选择器击倒Js-“;缺少此日期选择器的实例数据;_Asp.net Mvc_Jquery Ui_Knockout.js - Fatal编程技术网

Asp.net mvc 用jQueryUI日期选择器击倒Js-“;缺少此日期选择器的实例数据;

Asp.net mvc 用jQueryUI日期选择器击倒Js-“;缺少此日期选择器的实例数据;,asp.net-mvc,jquery-ui,knockout.js,Asp.net Mvc,Jquery Ui,Knockout.js,我在我的视图模型中将日期声明为可观察日期,如下所示: self.date = ko.observable(date); 在我的标记中,我声明控件如下: self.date = ko.observable(date); 这是在一个敲除JS模板中使用的,我正试图通过一个定制对象集合的开箱即用ASP.NETMVC模型绑定使其放置得更好 我正在使用以下淘汰JS自定义绑定: ko.bindingHandlers.datepicker = { init: function (element,

我在我的视图模型中将日期声明为可观察日期,如下所示:

self.date = ko.observable(date);
在我的标记中,我声明控件如下:

self.date = ko.observable(date);

这是在一个敲除JS模板中使用的,我正试图通过一个定制对象集合的开箱即用ASP.NETMVC模型绑定使其放置得更好

我正在使用以下淘汰JS自定义绑定:

ko.bindingHandlers.datepicker = {
    init: function (element, valueAccessor, allBindingsAccessor) {
        //initialize datepicker with some optional options
        var options = allBindingsAccessor().datepickerOptions || { dateFormat: 'dd/mm/yy' };
        $(element).datepicker(options);

        //handle the field changing
        ko.utils.registerEventHandler(element, "change", function () {
            var observable = valueAccessor();
            observable($(element).datepicker("getDate"));
        });

        //handle disposal (if KO removes by the template binding)
        ko.utils.domNodeDisposal.addDisposeCallback(element, function () {
            $(element).datepicker("destroy");
        });

    },
    //update the control when the view model changes
    update: function (element, valueAccessor) {
        var value = ko.utils.unwrapObservable(valueAccessor()),
            current = $(element).datepicker("getDate");

        if (value - current !== 0) {
            $(element).datepicker("setDate", value);
        }
    }
};
我的问题是,当在Datepicker中选择一个值时,Chrome中会出现以下错误:

未捕获此日期选择器缺少的实例数据
t、 扩展
t、 延长。\ u选择日期
t、 扩展。\ u attachHandlers.e.dpDiv.find.map.e.selectDay
x、 event.dispatch jquery.js:4692x.event.add.y.handle
如果删除用于设置控件Id和名称的属性绑定,则不会发生错误。我需要能够设置它,以便MVC模型绑定能够正确地解释它。欢迎提出任何建议或想法


谢谢

我怀疑问题在于,当应用datepicker绑定时,id尚未设置。从我在网上看到的情况来看,id是日期选择器工作方式的关键,日期选择器与id相关联。如果它发生变化,通常会导致问题

由于您使用的是knockout 3.1,因此可以将
after
属性添加到绑定处理程序中,并将
attr
绑定包含到列表中。这将确保首先应用列出的绑定,然后再应用此绑定。应用了
attr
绑定后,元素应该有一个id

ko.bindingHandlers.datepicker = {
    after: ['attr'], // add this
    init: ...,
    update: ...
};
请注意,由于您的ID在添加/删除付款时正在更新。如果更改改变了现有控件的id,它将分离关联的日期选择器,您将再次看到问题


什么版本的淘汰赛,2.x还是3.x?我还假设这个HTML片段位于foreach绑定中(由于使用了$index),我在标题“集成第三方小部件与”下找到了一个日期选择器的工作示例knockout@RobertSlaney是的,你是对的。为了简洁起见,我省略了foreach。我用的是淘汰赛3.1.0。G_’S谢谢,但该示例没有为数据绑定控件使用ID,这是我的问题非常感谢@Jeff Mercado,非常感谢您的帮助!谢谢,帮了我的忙。