Edit in JSFiddle

require.config({baseUrl: "http://ibm-js.github.io/libraries/master/"});
require(["liaison-build/layer"], function () {
    require([
        "decor/Observable",
        "liaison/ObservablePath"
    ], function (Observable, ObservablePath) {
        var observable = new Observable({foo: new Observable({bar: "Bar0"})}),
            observablePath = new ObservablePath(observable, "foo.bar"),
            input = document.querySelector("input"),
            text = document.querySelector("span").appendChild(document.createTextNode("")),
            initialValue = observablePath.open(function (newValue, oldValue) {
                input.value = newValue;
                text.nodeValue = newValue;
            });
    
        input.value = initialValue;
        text.nodeValue = initialValue;
    
        input.addEventListener("input", function (event) {
            // Ends up with observable.foo.set("bar", input.value);
            observablePath.setValue(input.value);
        });
    });
});