我第一次使用knockout.js。
我有以下绑定:
ko.bindingHandlers.dateselect = {
init: function (element) {
var picker = new Pikaday({
field: element,
});
},
update: function (element) {
var current = picker.getDate();
}
};
在
init
方法中,我初始化日期选择器,并尝试在 update
方法中获取日期,如上所示。
问题是我收到以下错误:
未定义选择器
有什么方法可以访问
picker
方法内的 update
实例吗?
您可以通过设置存储到元素中的助手来完成此操作。
例如
function SomeBindingHelper(element, valueAccessor, allBindings, viewModel, bindingContext) {
var sharedVariable = "Banana";
// Call on init.
this.init = function () {
console.log("init", sharedVariable);
}
// Call on update.
this.update = function () {
console.log("update", sharedVariable);
}
}
ko.bindingHandlers.someBinding = {
init: function (element, valueAccessor, allBindings, viewModel, bindingContext) {
var bindingHelper = new SomeBindingHelper(element, valueAccessor, allBindings, viewModel, bindingContext);
bindingHelper.init();
ko.utils.domData.set(element, "someBindingHelper", bindingHelper);
},
update: function (element, valueAccessor, allBindings, viewModel, bindingContext) {
var bindingHelper = ko.utils.domData.get(element, "someBindingHelper");
bindingHelper.update();
}
}
当时的情况可能并非如此,但对于将来遇到此问题的任何人来说,我发现下面的代码是有效的。
ko.bindingHandlers.dateselect = {
init: function (element) {
this.sharedVar = true;
var picker = new Pikaday({
field: element,
});
},
update: function (element) {
console.log("sharedvar", this.sharedVar);
var current = picker.getDate();
}
};