gpt4 book ai didi

javascript - 基于最大值的 knockout 可观察到的依赖关系

转载 作者:行者123 更新时间:2023-11-29 22:07:52 25 4
gpt4 key购买 nike

我必须观察 ab

viewModel.a = ko.observable(25);
viewModel.b = ko.observable(25);

它们的总和等于 50。更改 a 会影响 b,更改 b 会影响 a。所以显示的总和永远不会超过 50。

viewModel.a.subscribe(function(value){
viewModel.b(50 - value);
});
viewModel.b.subscribe(function(value){
viewModel.a(50 - value);
});

http://jsfiddle.net/5nq9g/
有没有办法在 knockout 中简化这个逻辑?

最佳答案

我认为你的方法很好,但你可以计算其中之一:

viewModel.b = ko.computed({
read: function() {
return 50 - viewModel.a();
},
write: function(value) {
viewModel.a(50 - value);
}
});

http://jsfiddle.net/ybeQm/

您还可以创建一个函数,为订阅返回一个新函数,这样您的逻辑只定义一次:

function createMaxFilter(restValueObservable) {
return function(value) {
restValueObservable(50 - value);
};
}
viewModel.a.subscribe(createMaxFilter(viewModel.b));
viewModel.b.subscribe(createMaxFilter(viewModel.a));

http://jsfiddle.net/T4Hh3/

关于javascript - 基于最大值的 knockout 可观察到的依赖关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19915710/

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