gpt4 book ai didi

javascript - 订阅 knockoutjs View 模型中中间对象的更改

转载 作者:行者123 更新时间:2023-11-30 00:29:21 24 4
gpt4 key购买 nike

我有一个大的 knockout viewModel,这是一个 JSON 表示:

...
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 和 endDate 是 observable,而 plans 是一个 observableArray。我想做的是创建一个绑定(bind),当这三个 observable 中的任何一个在“existingPlans”级别发生变化时触发。

我可以创建一个依赖于所有三个的计算域,但是没有更简单的方法吗?

下面的例子是行不通的,因为 existingPlans 本身是不可观察的(对吧?)

viewModel.existingPlans.subscribe(function(newValue) {
// do stuff with newValue.startDate(), etc
})

最佳答案

这取决于当这些属性发生变化时应该发生什么。如果你只是想触发一个事件或类似的东西,你可以订阅属性并为它们使用相同的订阅处理程序,就像这样

function ExistingPlans() {
this.startDate = ko.observable();
this.endDate = ko.observable();
this.plans = ko.observableArray();

this.startDate.subscribe(this.handleChange, this);
this.endDate.subscribe(this.handleChange, this);
this.plants.subscribe(this.handleChange, this);
}

ExistingPlans.prototype.handleChange = function () {
// do stuff
};

如果您需要根据属性值计算某些内容或呈现某些结果,我会创建一个计算可观察对象。

关于javascript - 订阅 knockoutjs View 模型中中间对象的更改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30199945/

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