删除自定义选择绑定器与更新功能

knockout custom select binder with update function

本文关键字:更新 新功能 绑定 自定义 选择 删除      更新时间:2023-09-26

我试图开发一个自定义选择粘合剂,但我无法理解如何开发更新功能。目前这就是我所做的。我想要自定义绑定器来处理这种类型的数据

[{
    message: "Hello",
    Value: 1
}, {
    message: "Hi",
    Value: 2
}, {
    message: "Bye",
    Value: 3
}, ]

问题,正如我所理解的:你正在使用Bootstrap全屏选择,你可以初始化它,但是当你选择一个新值时,没有可观察对象得到更新。基本上,我们需要知道什么时候选择了一个新值。

由于小部件的工作方式是弹出一个选项屏幕,允许您选择一个,然后关闭该弹出窗口,小部件提供了执行onClose回调的能力,这就是我们所需要的。

我在select中使用value绑定的标准约定。当小部件关闭时,如果新值与绑定值不同,我将把绑定值更新为小部件中选择的新值。

ko.bindingHandlers.menu = {
    init: function (element, valueAccessor, allBindingsAccessor, viewModel) {
        var valueObservable = allBindingsAccessor().value;
        $(element).mobileSelect({
            onClose: function () {
                var newValue = $(this).val();
                if (newValue !== valueObservable()) {
                    valueObservable(newValue);
                }
            }
        });
    }
};

As a fiddle: http://jsfiddle.net/4zsu9pv2/4/