可观察量相互依赖以获取自己的值 - 循环引用
observables dependent on one another for their own values - circular references
可能是一个淘汰新手问题。 我这周刚开始学习淘汰赛。
我有两个可观察值 - 宽度和高度。这些值最初是通过抓取单击元素的宽度和高度来设置的,因此此部分无需计算。 问题是,一旦捕获了初始值,我想保持所有未来更改的纵横比。 因此,如果用户更新宽度,我希望高度根据纵横比(原始宽度/原始高度)进行更新。 因此,当用户更改宽度时,高度必须更改,反之亦然。
我已经使用订阅者尝试过这个,但这会导致您可能期望的无限循环,因为宽度的任何更改都需要更改高度,反之亦然。 我已经研究了计算的可观察量和扩展器,但我不确定任何一个是正确的答案,尽管这可能是由于我在淘汰赛方面的经验有限。
如有必要,我可以提供一些代码,但我想如果可能的话,我会尽量保持这个概念。 只是为我指明正确的道路。
感谢您的任何帮助!
就像任何循环依赖一样,你必须打破循环。 与其有两个相互依赖的可观察量,不如使它们依赖于一个或多个常见的可观察量。 可以保持该比率的可观察量。
例如,
function Proportional (width, height) {
var _ratio = width / height,
_width = ko.observable(width),
_height = ko.observable(height);
this.width = ko.dependentObservable({ read: _width, write: setWidth });
this.height = ko.dependentObservable({ read: _height, write: setHeight });
function setWidth(width) {
_width(width);
_height(width / _ratio);
}
function setHeight(height) {
_height(height);
_width(height * _ratio);
}
}
function ViewModel(data) {
var p = new Proportional(data.width, data.height);
this.width = p.width;
this.height = p.height;
}
小提琴
相关文章:
- jQuery:循环一个具有不同超时值的循环
- 按我自己的类克隆另一个元素的内容和顺序
- 对于加载时间过长的循环来说是巨大的
- 如何配置分析以将数据发送到我自己的服务器
- 带有延迟的循环每次应运行5次
- 如何使用jquery ajax和jsonp在您自己的域上读取json数据
- FRP 中 EventStreams 的循环依赖关系
- 创造自己的智能
- jQuery延迟了ajax调用的循环
- 如何在Win8Metro应用程序的Javascript代码中捕获自己的C#事件
- 来自MDN的循环示例的JavaScript不起作用
- 从自己的安全系统中重新找回自己
- 如何使用React JS中的循环,根据条件渲染或不渲染表数据
- 在javascript函数的循环中设置全局布尔变量的最佳语法
- 通过提示中的循环触发iFrame中的输入按钮(JavaScript)
- 麻烦将coffee脚本片段移动到rails中自己的类中
- 从我自己的脚本中包含的Javascript文件中调用一个函数
- 函数在自己的循环中使用 i,以及一个子函数循环 - var 的行为类似于 let
- 可观察量相互依赖以获取自己的值 - 循环引用
- Ember.js – 将按钮操作从 #each 循环绑定到其自己的模型