You are a little confused: every value that other parts of your review model should respond to, if they have changed, should be observable. In your case, you have a "price" object that is observable, but the properties of this object (such as "Price 1" and "Price 2") are not observable. This means that your calculated observable will be updated only if the entire object placed in the "prices" is replaced with a new value.
So, just make these values โโinvisible:
var pModel = function () { var self = this; self.prices = { "ID": 1, // IDs normally do not change so no observable required here "Price1": ko.observable(12), "Price2": ko.observable(12) }; self.Total = ko.computed(function () { return +self.prices.Price1() + +self.prices.Price2(); }); };
Demo: http://jsfiddle.net/Jjgvx/3/
source share