0

我在视图模型中有一个可观察的变量“速率”和可观察的数组“座位”。数组的元素“priceOtherCurrency”中有一个计算变量,它的主体中需要父级的“汇率”。如何访问父变量或将参数传递给计算函数?

这是一个例子:

小提琴样本

在这个例子中,我在 SeatReservation 对象中添加了一个“rate”:

function SeatReservation(name, initialMeal, rate) {
    var self = this;
    self.name = name;
    self.meal = ko.observable(initialMeal);
    self.rate = rate;
    self.priceOtherCurrency = ko.computed(function() {
        return self.meal().price * self.rate();    
    }, this);
}

但它是重复的。如果没有 SeatReservation、隐藏字段等中的“价格”,我该如何做同样的事情?

4

1 回答 1

2

您可以访问父绑定上下文,并在视图中执行此操作:

<td data-bind="text: $parent.rate() * priceOtherCurrency()"></td>

这在视图模型中:

self.priceOtherCurrency = ko.computed(function() {
    return self.meal().price; 
}, this);

更新小提琴:http: //jsfiddle.net/LkqTU/12156/

但是,这会将业务逻辑放在视图中,这不是一件好事。视图模型层次结构应该模仿数据结构的概念层次结构。如果当前视图模型是您的数据结构的正确设计,我会说让它们保持原样,即使您必须在构造函数中传递速率参数。

于 2013-10-29T06:26:43.867 回答