datepicker init绑定时出错 [英] Error on datepicker init binding

查看:139
本文介绍了datepicker init绑定时出错的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

嗨!



我在淘汰赛上遇到init事件绑定问题



这是代码:



Hi!

I'm having a problem on a init event binding on knockout

This is the code:

ko.bindingHandlers.datepicker = {
    init: function (element, valueAccessor, allBindingsAccessor) {
        //initialize datepicker with some optional options
        var options = allBindingsAccessor().datepickerOptions || {};
        $(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");
        });

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

        //handle date data coming via json from Microsoft
        if (String(value).indexOf('/Date(') == 0) {
            value = new Date(parseInt(value.replace(/\/Date\((.*?)\)\//gi, "$1")));
        }

        if (element.isFirstRun) {
            $(element).val(value);
            element.IsFirstRun = false;
            return;
        }

        var current = $(element).datepicker("getDate");

        if (value - current !== 0) {
            $(element).datepicker("setDate", value);
        }
    }
};





代码片段在哪里observable($(元素) ).datepicker(getDate));在文件moment-datepicker.js:443中给出错误Uncaught TypeError:undefined is not function,此文件的代码行443是摘录:





Where is the code snippet "observable ($ (element) .datepicker (" getDate "));" is giving an error "Uncaught TypeError: undefined is not a function" in the file "moment-datepicker.js: 443", and the line of code 443 of this file is the excerpt:

$.fn.datepicker = function (option, val) {
        var results = [];
        var chain = this.each(function () {
            var $this = $(this),
                data = $this.data('datepicker'),
                options = typeof option === 'object' && option;
            if (typeof option === 'string') {
                if (data) {
                    if (val) {
line 443                        var result = data[option](val); //crashes exactly here
                        if (typeof result !== 'undefined')
                            results.push(result);
                    }
                }
            } else if (!data) {
                $this.data('datepicker', (data = new Datepicker(this, $.extend({}, $.fn.datepicker.defaults, options))));
            }
        });
        return results.length == 1 ? results[0]
            : results.length ? results
            : chain;
    };

推荐答案

(元素).datepicker(options);

// 处理字段更改
ko.utils。 registerEventHandler(element, change,function(){
var observable = valueAccessor();
observable(
(element).datepicker(options); //handle the field changing ko.utils.registerEventHandler(element, "change", function () { var observable = valueAccessor(); observable(


(element).datepicker( getDate));
});

// 句柄处理(如果KO通过模板绑定删除)
ko.utils.domNodeDisposal.addDisposeCallback(element,function(){
(element).datepicker("getDate")); }); //handle disposal (if KO removes by the template binding) ko.utils.domNodeDisposal.addDisposeCallback(element, function () {


(element).datepicker( < span class =code-string> destroy);
});

element.isFirstRun = true ;
},
更新:function(element,valueAccessor){
var value = ko.utils.unwrapObservable(valueAccessor());

// 处理来自Microsoft的json的日期数据
if String value )。indexOf (' / Date(')== 0 ){
value = new 日期(parseInt( value .replace(/ \ / Date \((。*?)\)\ // gi,
(element).datepicker("destroy"); }); element.isFirstRun = true; }, update: function (element, valueAccessor) { var value = ko.utils.unwrapObservable(valueAccessor()); //handle date data coming via json from Microsoft if (String(value).indexOf('/Date(') == 0) { value = new Date(parseInt(value.replace(/\/Date\((.*?)\)\//gi, "


这篇关于datepicker init绑定时出错的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆