【发布时间】:2015-01-25 02:10:38
【问题描述】:
我在淘汰赛的初始化事件绑定上遇到问题
这是代码:
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);
}
}
};
代码在哪里 sn -p "observable($(element).datepicker("getDate"));"在文件“moment-datepicker.js:443”中给出错误“Uncaught TypeError: undefined is not a function”,该文件的代码443行是摘录:
$.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;
};
【问题讨论】:
-
如果你想获取选定的日期,你可以使用 "var v = valueAccessor()();"
标签: twitter-bootstrap knockout.js datepicker momentjs