gpt4 book ai didi

jquery-ui - 使用带有 jquery ui slider 的 knockout js

转载 作者:行者123 更新时间:2023-12-04 01:16:57 25 4
gpt4 key购买 nike

我试图弄清楚 knockout js 是否可以很好地解决以下问题:

我有多个要链接到文本框的 slider 。

当文本框更改时,相应的 slider 必须更新为新值,反之亦然。

在更改 slider 值或文本框时,需要调用一个函数,该函数使用来自所有文本框的输入来计算结果。

我有我快速而肮脏的 jQuery 解决方案 here .

使用 knockout js以更优雅的方式实现相同的结果是否容易?

我想我需要创建一个自定义绑定(bind)处理程序,就像它在 jQuery UI datepicker change event not caught by KnockoutJS 中所做的那样

最佳答案

这是一个例子:http://jsfiddle.net/jearles/Dt7Ka/

我使用自定义绑定(bind)来集成 jquery-ui slider 并使用 Knockout 捕获输入并计算 Netty 。

--

用户界面

<h2>Slider Demo</h2>

Savings: <input data-bind="value: savings, valueUpdate: 'afterkeydown'" />
<div style="margin: 10px" data-bind="slider: savings, sliderOptions: {min: 0, max: 100, range: 'min', step: 1}"></div>

Spent: <input data-bind="value: spent, valueUpdate: 'afterkeydown'" />
<div style="margin: 10px" data-bind="slider: spent, sliderOptions: {min: 0, max: 100, range: 'min', step: 1}"></div>

Net: <span data-bind="text: net"></span>

查看模型
ko.bindingHandlers.slider = {
init: function (element, valueAccessor, allBindingsAccessor) {
var options = allBindingsAccessor().sliderOptions || {};
$(element).slider(options);
$(element).slider({
"slide": function (event, ui) {
var observable = valueAccessor();
observable(ui.value);
},
"change": function (event, ui) {
var observable = valueAccessor();
observable(ui.value);
}
});
ko.utils.domNodeDisposal.addDisposeCallback(element, function () {
$(element).slider("destroy");
});
},
update: function (element, valueAccessor) {
var value = ko.unwrap(valueAccessor());
if (isNaN(value)) {
value = 0;
}
$(element).slider("value", value);
}
};

var ViewModel = function() {
var self = this;

self.savings = ko.observable(10);
self.spent = ko.observable(5);
self.net = ko.computed(function() {
return self.savings() - self.spent();
});
}

ko.applyBindings(new ViewModel());

关于jquery-ui - 使用带有 jquery ui slider 的 knockout js,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12856112/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com