editor & dataSource

HTML

<script src="http://cdn.kendostatic.com/2012.2.710/js/kendo.all.min.js"></script>
<link rel="stylesheet" href="http://cdn.kendostatic.com/2012.2.710/styles/kendo.common.min.css">
<link rel="stylesheet" href="http://cdn.kendostatic.com/2012.2.710/styles/kendo.default.min.css">
<link rel="stylesheet" href="http://cdn.kendostatic.com/2012.2.710/styles/kendo.mobile.all.min.css">
<div id="ContactsDetails" >
    <ul>
        <li>
            <label>ID</label>
            <span data-bind="text:selectedContact.ContactID, events: { change: change }"></span>
        </li>
        <li>
            <label>Name</label>
            <input type="text" class="k-textbox" data-bind="value: selectedContact.FirstName, events: { change: change }" />
        </li>
        <li>
            <label>UnitPrice</label>
            <input type="text" class="k-textbox" data-bind="value: selectedContact.LastName, events: { change: change }" />
        </li>
    </ul>
    
    <button data-bind="click: goToContactsListing">Back to Listing</button>
    <button data-bind="click: saveChanges, enabled: hasChanges">Save Changes</button>
</div>

JavaScript

function Contacts_Details_ViewModel(SelectedContactID) {  
    var self = this;
    var selectedContact;
    var selectedContactID = SelectedContactID;
    var contacts_Details_DataSource = new kendo.data.DataSource({
        data: [
            {
                ContactID: 1,
                FirstName: "John",
                LastName: "Smith"
            }
        ],
        change: function () {
            selectedContact = this.view()[0];                   
        },
        schema: {
            model: {
                id: "ContactID"
            }
        }
    });
    
    contacts_Details_DataSource.read();
    
    var goToContactsListing = function () {
        console.log("goToContactsListing");        
        //this.selectedContactID = null;
        //location.hash = ''
    }

    var change = function () {
        console.log("change");
        this.set("hasChanges", true);        
    }

    var hasChanges = false;

    var saveChanges = function () {
        contacts_Details_DataSource.sync();
        this.set("hasChanges", false);        
    }

    return {
        contacts_Details_DataSource: contacts_Details_DataSource,
        selectedContact: selectedContact,
        goToContactsListing: goToContactsListing,
        change: change,
        hasChanges: hasChanges,
        saveChanges: saveChanges
    };
}


var contacts_Details_ViewModel = kendo.observable(new Contacts_Details_ViewModel(1));
kendo.bind($("#ContactsDetails"), contacts_Details_ViewModel);