Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/css/40.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Knockout.js 如何从计算绑定访问父级_Knockout.js - Fatal编程技术网

Knockout.js 如何从计算绑定访问父级

Knockout.js 如何从计算绑定访问父级,knockout.js,Knockout.js,我在视图模型中有一个可观察的可变“速率”和可观察的阵列“座位”。数组的元素“priceOtherCurrency”中有一个计算变量,它的主体中需要父级的“rate”。如何访问父变量或向计算函数传递参数 以下是一个例子: 在本例中,我在SeatServation对象中添加了一个“rate”: function SeatReservation(name, initialMeal, rate) { var self = this; self.name = name; self

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

以下是一个例子:

在本例中,我在SeatServation对象中添加了一个“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);
}

但它是重复的。如果没有SeatServation、hidden field等中的“rate”,我如何执行相同的操作?

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

<td data-bind="text: $parent.rate() * priceOtherCurrency()"></td>
更新小提琴:

然而,这将业务逻辑置于视图中,这不是一件好事。viewmodel层次结构应模拟数据结构的概念层次结构。如果当前的viewmodels是适合您的数据结构的正确设计,我会说让它们保持原样,即使您必须在构造函数中传递rate参数。

我已经找到了答案。
self.priceOtherCurrency = ko.computed(function() {
    return self.meal().price; 
}, this);