Scope and Subscribing to an Observable

http://stackoverflow.com/questions/16587820/how-to-detect-the-observable-property-that-was-called-in-manual-subscriptions

by tlarson

HTML

<script src="https://raw.github.com/SteveSanderson/knockout.mapping/master/build/output/knockout.mapping-latest.js"></script>

JavaScript

var dataFromServer = {
    FirstName: "John",
    LastName: "Smith"
};

function subscribeWithName(propName, observable) {
    var closureProp = propName;
    observable.subscribe(function(newValue) {
        alert("New value is: " + newValue);
        alert("Property that called: " + closureProp);
    });
}

var GetInformedOnChange = function () {
    var self = this;

    this.Data = ko.mapping.fromJS(dataFromServer);

    for(var prop in this.Data) {
        if(self.Data.hasOwnProperty(prop) && prop != "__ko_mapping__") {
            subscribeWithName(prop, self.Data[prop]);            
        }
    }
};

var foo = new GetInformedOnChange();
foo.Data.FirstName("Sam");