改變中間對象我有一個大的基因敲除的ViewModel這是其中JSON表示:訂閱在knockoutjs視圖模型
...
existingPlans: {
startDate: "2014-11-01",
endDate: "2017-03-01",
plans: [
{
"customTitle": "plan 1 name",
"monthlyPayments": [ 15000, 15000, 15000, 15000, 15000, 15000 ],
"futureBalance": [ 90000, 75000, 60000, 45000, 30000, 15000 ]
},
{
"customTitle": "plan 2 name",
"monthlyPayments": [ 7000, 7000, 7000, 7000 ],
"futureBalance": [ 28000, 21000, 14000, 7000 ]
}
]
}
...
的StartDate和結束日期是可觀測量和計劃是observableArray。 我想要做的是創建一個綁定,當這三個可觀察對象中的任何一個在「existingPlans」級別發生改變時觸發。
我可以做一個計算字段,取決於所有三個,但沒有一個更簡單的方法做到這一點?
喜歡的東西下面的例子並不因爲existingPlans工作本身不能觀察到的(是嗎?)
viewModel.existingPlans.subscribe(function(newValue) {
// do stuff with newValue.startDate(), etc
})
好的,所以我必須在任何情況下通過可觀察的孩子?綁定到JSON樹更高的東西不是一種選擇? – koenpeters
我可能誤解了你的問題。如果ExistingPlans實體存在於父視圖模型中,則可以以類似方式訂閱屬性,如'this.existinPlans.startDate.subscribe(this.handleChange,this)',然後將'handleChange'方法添加到父視圖模型中。 – lagerone
你不能只觀察根對象,因爲敲除正在觀察引用的變化,所以即使你修改了子對象,引用仍然是一樣的,所以你需要像上面那樣向所有子項添加訂閱者 – Luis