Javascript 在另一个上下文中使用计算可观测的实例
我在网上搜索了一段时间,找到了一个使用knockout js computed observable功能将Javascript 在另一个上下文中使用计算可观测的实例,javascript,knockout.js,Javascript,Knockout.js,我在网上搜索了一段时间,找到了一个使用knockout js computed observable功能将owner属性设置为根上下文以外的另一个上下文的示例 问题是,我试图访问根计算属性上的foreach当前上下文,以便在主vm上的一个属性的帮助下计算product.finalPrice属性,如下所示: var product = function(){ this.finalPrice = ko.observable(0); // setting its value on the main
owner
属性设置为根上下文以外的另一个上下文的示例
问题是,我试图访问根计算属性上的foreach当前上下文,以便在主vm上的一个属性的帮助下计算product.finalPrice
属性,如下所示:
var product = function(){
this.finalPrice = ko.observable(0); // setting its value on the main vm.
};
var mainVM = function(){
this.taxRate = ko.observable(0.18); // tax property that is involoved on product price.
this.CalculateFinalPrice = ko.computed({
read:function(){....}, // reading value from current product context.
write:function(value){....},
owner: // I want to set the current foreach binding context here in order to change current product final price here.
});
};
如果你有任何其他的想法来实现这个概念使用另一种技术,请列出它
提前谢谢 我认为你不必担心谁是主人。我也不认为你应该试图修改产品的价格,因为你不知道你是否已经这样做了。每次访问计算属性时,您都会一次又一次地应用税率 如果在
mainVM
中有一个可观察的产品
数组,那么它可以保持原样。但是,如果每个产品都从mainVM
知道税率,那么它就可以计算自己的最终价格。在本例中,我使用一个中介将税率从mainVM
链接到每个产品。然后,您可以随时访问任何产品的未征税价格或征税价格:
var taxMediator = new ko.subscribable();
var product = function(initialPrice) {
var self = this;
self.taxRate = ko.observable(0);
taxMediator.subscribe(function(newValue) {
self.taxRate(newValue);
}, self, "updated");
self.price = ko.observable(initialPrice);
self.finalPrice = ko.computed(function() {
return (+self.price() * (1 + +self.taxRate())).toFixed(2);
});
};
var mainVM = function(){
var self = this;
self.taxRate = ko.observable(0);
self.taxRate.subscribe(function(newValue) {
taxMediator.notifySubscribers(newValue, "updated");
});
self.products = ko.observableArray((function() {
return [
new product(100),
new product(300),
new product(50)
];
})());
};
ko.applyBindings(new mainVM());
你可以看到一个谢谢@Cory的重播,我有一个产品列表(不是一个产品)在我的mainVM上定义为可观察数组,所以我需要一种方法来访问每个产品,并在mainVM taxRate属性的帮助下修改其价格,使用计算属性y你的soulotion非常适合我项目的另一个任务:),但问题是,我想访问self.CalculateFinalPrice属性上的一个产品实例,并获取其finalPrice*taxRate-我需要一些方法来访问CalculateFinalPrice方法上每个绑定上下文的html视图。@samih:如果每个产品都知道如何计算自己的最终价格呢?我又更新了我的答案。在上面的例子中通读我的思考过程。它现在运行良好,我从中学到了一个新东西:),非常感谢!