改变中间对象我有一个大的基因敲除的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