knockout.js Knockout -自定义绑定-将变量从init传递到update

2j4z5cfb  于 4个月前  发布在  其他
关注(0)|答案(2)|浏览(44)

第一次使用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示例?

r55awzrz

r55awzrz1#

您可以通过设置存储到元素中的helper来实现这一点。
例如

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

字符串

d4so4syb

d4so4syb2#

可能不是在当时的情况下,但任何人在未来绊倒这一点,我发现下面的代码工程。

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

    }
};

字符串

相关问题