代码之家  ›  专栏  ›  技术社区  ›  Lodder

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

  •  0
  • Lodder  · 技术社区  · 8 年前

    第一次使用击倒。我是js。

    本人具有以下约束力:

    ko.bindingHandlers.dateselect = {
        init: function (element) {
    
            var picker = new Pikaday({
                field: element,
            });
    
        },
        update: function (element) {
    
            var current = picker.getDate();
    
        }
    };
    

    init 方法,我初始化日期选择器,并尝试在 update 方法,如上所示。

    问题是我遇到以下错误:

    未定义选取器

    有没有办法进入 picker 实例内部的 使现代化 方法

    1 回复  |  直到 8 年前
        1
  •  1
  •   Paul    8 年前

    可以通过设置辅助对象来实现这一点,这些辅助对象存储到元素中。

    E、 g。

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