1
這個想法很簡單,但我並不真正知道如何解決以下問題。KnockoutJS:兩個可觀察對象的雙向依賴關係
欲計算圓的周邊,
U = 2*Math.PI*R
所以,U是周邊UND R是圓的半徑。單向解決方案很簡單。在HTML代碼看起來像
R: <input data-bind="value: radius"><br>
U: <input data-bind="value: periphery">
和視圖模型看起來像
function ViewModel() {
this.radius = ko.observable(1);
this.periphery = ko.computed(function(){
var r = parseFloat(this.radius());
return 2*Math.PI*r;
},this);
}
下面是一個例子:http://jsfiddle.net/dundanox/2SsF9/
在這種單向的解決方案,我在一個半徑鍵入並獲得圓周圍。其實我只是可以扭轉整個解決方案。設置外圍並獲得半徑。但我打算有一個雙向解決方案。我如何使用KnockoutJS來做到這一點?
下一步是在圓形(半徑或外圍)發生變化時觸發事件。通常我會做訂閱:
vm.radius.subscribe(function(r){ // do someting });
但是,它只是一個單向的解決方案。
好的,謝謝,但這種方法我試過了。那麼半徑就像是初級或「中心」,外圍是次級可觀察的。我想到一個更分散的解決方案。但在大多數情況下,我認爲集中版本非常好。這裏是一個擴展的例子[JSFIDDLE](http://jsfiddle.net/dundanox/6xP5m/7/) – user3356865