0
ノックアウトを使用して学習しています。私が今行っていることは、jquery ui slider
を使用してスライダーを作成することです。私たちは、スライダーを変更すると、私のViewModel
ノックアウトを使用してスライダーを作成
var ViewModel = function() {
var self = this;
self.A = ko.observable(null);
var x = Math.random();
if(x<0.33){
self.A(0);
}else if (x>0.33 && x<0.66){
self.A(50);
}else {
self.A(100);
}
}
INと逆にAの値に応じて設定されるべきで0、50と100:私のスライダーで
ko.bindingHandlers.slider = {
init: function (element, valueAccessor, allBindingsAccessor) {
var options = allBindingsAccessor().sliderOptions || {};
$(element).slider(options);
ko.utils.registerEventHandler(element, "slidechange", function (event, ui) {
var observable = valueAccessor();
observable(ui.value);
});
ko.utils.domNodeDisposal.addDisposeCallback(element, function() {
$(element).slider("destroy");
});
ko.utils.registerEventHandler(element, "slide", function (event, ui) {
var observable = valueAccessor();
observable(ui.value);
});
},
update: function (element, valueAccessor) {
var value = ko.utils.unwrapObservable(valueAccessor());
if (isNaN(value)) value = 0;
$(element).slider("value", value);
}
};
は、3つの状態があります
View
では、
ViewModel
のパラメータAも変更する必要があります。
これは私のビューです:Aの値に応じて、これらの三つの状態でスライダーを作成することが、私はすでに成功し
<div style="margin: 10px" data-bind="slider: A, sliderOptions: {min: 0, max: 100, step: 50}"></div>
が、私はスライダーを変更すると、viewModel
におけるAの新しい値があります更新されていない。誰にでもアイデアはありますか?
ここは私のjsfiddleです。
[微調整あなたのjsfiddleが私のために正常に動作している場合]私は例がステップ 'と明確に感じたけれども、私は((http://jsfiddle.net/18jzuvcd/)今 – Sonn
を変更[OK] :10 '、および「アフターキーダウン」更新なし)。それで、あなたが正確に求めていることは私には不明です。 – Jeroen
こんにちはジェローン、混乱させて申し訳ありません。私はすでに私の質問をより明確にするためにもう一度更新しました。質問について:なぜあなたは、スライダー自体ではなく、allBindingsAccessorを通してsliderOptionsを渡すのですか? ' 。私はちょうどインターネットのスライダーのコードを見つけたので、私は分かりません。 – Sonn