我有一个使用映射插件的 Knockout Viewmodel。映射 JSON 对象后,我创建了一些计算值,如下所示:
/* viewmodel setup and mapping */
myViewModel
.formattedGiftAmount = ko.computed({
read: function () {
return parseInt(this.giftAmount(), 10).formatMoney();
}
, write: function (value) {
this.giftAmount(value.unformatMoney());
}
, owner: this
})
.formattedGoal = ko.computed({
read: function () {
return parseInt(this.goalAmount(), 10).formatMoney();
}
, write: function (value) {
this.goalAmount(value.unformatMoney());
}
, owner: this
});
不要太担心代码的作用,我更关心的是模式。如您所见,这两个属性formattedGiftAmount()
具有formattedGoal()
几乎相同的对象来定义它们。唯一的区别是它们修改了哪些属性。我可能会有更多这样的实例,所以我想知道是否有任何方法可以使它更可重用。我可以想象做类似的事情this[prop]()
,但我不太清楚如何将它注入对象并让它工作。
PS:我已经看到了,但它仍然不能完全满足我的要求。