Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/extjs/3.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
Javascript 敲除-自定义绑定-将变量从init传递到update_Javascript_Knockout.js - Fatal编程技术网

Javascript 敲除-自定义绑定-将变量从init传递到update

Javascript 敲除-自定义绑定-将变量从init传递到update,javascript,knockout.js,Javascript,Knockout.js,我第一次使用knockout.js 本人有以下约束力: ko.bindingHandlers.dateselect = { init: function (element) { var picker = new Pikaday({ field: element, }); }, update: function (element) { var current = picker.getDate();

我第一次使用knockout.js

本人有以下约束力:

ko.bindingHandlers.dateselect = {
    init: function (element) {

        var picker = new Pikaday({
            field: element,
        });

    },
    update: function (element) {

        var current = picker.getDate();

    }
};
init
方法中,我初始化日期选择器,并尝试在
update
方法中获取日期,如上所示

问题是我遇到以下错误:

未定义选择器


是否有任何方法可以访问
update
方法中的
picker
实例?

您可以通过设置helpers来实现这一点,helpers存储到元素中

例如

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();
    }
}