我正在尝试将KnockoutJS与jQuery UI一起使用。我有一个附加了日期选择器的input
元素。我正在使用Knockout-3-2-0.js。每次我更新datepicker时,它绑定的变量只会抛出以下异常值。
未捕获的TypeError:字符串不是函数
我检查了变量,传递的数据是字符串值。
ko.bindingHandlers.datepicker = {
init: function(element, valueAccessor, allBindingsAccessor) {
var $el = $(element);
//initialize datepicker with some optional options
var options = allBindingsAccessor().datepickerOptions || {};
$el.datepicker(options);
//handle the field changing
ko.utils.registerEventHandler(element, "change", function() {
var observable = valueAccessor();
observable($el.datepicker("getDate"));
});
//handle disposal (if KO removes by the template binding)
ko.utils.domNodeDisposal.addDisposeCallback(element, function() {
$el.datepicker("destroy");
});
},
update: function(element, valueAccessor) {
var value = ko.utils.unwrapObservable(valueAccessor()),
$el = $(element),
current = $el.datepicker("getDate");
if (value - current !== 0) {
$el.datepicker("setDate", value);
}
}
};
答案 0 :(得分:1)
我的猜测是你提供了一个字符串作为html中绑定的值访问器,所以像这样:
<input data-bind="datepicker: '2015-05-10'" />
在抛出错误的地方,您将值访问器分配给observable
变量,然后尝试将其作为函数调用。我相信你想用你的视图模型做的是提供一个observable作为绑定的值访问器,如下所示:
<input data-bind="datepicker: myObservableDate" />
我把一个快速小提琴放在一起:http://jsfiddle.net/npbee/s4mmfada/