This is the excepted behavior:
By default, a computed observable has its value determined immediately during creation.
If you want to change this, you need to set the deferEvaluation
to true:
then the value of the computed observable will not be evaluated until something actually attempts to access its value or manually subscribes to it.
So your computeds should look like this:
function AppViewModel() {
this.firstName = ko.observable('Bob');
this.lastName = ko.observable('Smith');
this.fullName = ko.computed(function() {
return this.firstName() + " " + this.lastName();
}, this, { deferEvaluation: true });
}