Over a million developers have joined DZone.
{{announcement.body}}
{{announcement.title}}

Using Model-View ViewModel Design Pattern in Kendo UI

DZone's Guide to

Using Model-View ViewModel Design Pattern in Kendo UI

· Web Dev Zone ·
Free Resource

Deploying code to production can be filled with uncertainty. Reduce the risks, and deploy earlier and more often. Download this free guide to learn more. Brought to you in partnership with Rollbar.

Kendo UI is completely new to me and I got introduced to it when Brandon Satrom left Microsoft and joined the Kendo UI team. I had interacted with him when I was working on jQuery ‘Pinify’ plugin. Kendo UI is a HTML5, jQuery based framework for building both web and mobile applications. It not only provides a set of UI widgets and other data visualization components but also a framework for data binding, animation and drag-and-drop. Whilst I was looking into the framework I stumbled upon the Mode-View ViewModel (MVVM) design pattern built into it.

This design pattern (MVVM) helps you separate the Model (data) from the View. The ViewModel part of MVVM exposes the data objects which is consumed by the view and if the user changes the data in the view, the model will be updated with the new data.

<script src="../../js/jquery.min.js" />
<script src="../../js/kendo.all.min.js" />

<script>
$('document').ready(function(){
var viewModel = kendo.observable({
fname: "Sagar",
lname: "Ganatra",
fullname: function() {
return this.get("fname") + ' ' + this.get("lname");
}
});
kendo.bind($('form#testView'),viewModel);
});
</script>

In the above code, I'm creating a viewModel object that defines the data which will be consumed by the view. The View-Model object is created by calling the function kendo.observable, passing a JavaScript object. Here the keys firstname and lastname contain string data and fullname refers to a function which returns fullname by concatenating firstname and lastname.

Here’s the HTML form that would consume the data defined in the ViewModel:

<form id="testView">
Firstname: <input id="firstName" type="text" data-bind="value: fname"><br/>
Lastname: <input id="lastName" type="text" data-bind="value: lname"><br/>
Fullname: <input id="fullname" type="text" data-bind="value: fullname"><br/>
<input type="submit">
</form>

 This is a simple HTML form, but one thing to note here is the use of data-bind attributes. The data-bind attribute specifies the key to which it will be bound to in the ViewModel. Now that the View and the ViewModel are defined, they can be bound by calling the method kendo.bind($('form#testView'),viewModel).

When the page is loaded you'll be able to see values from the ViewModel being shown in the form fields. Now when a user changes the values it will be updated in the ViewModel i.e. when you change the firstname and lastname values it will be updated in the viewModel object and the fullname will be assigned the new value.

Deploying code to production can be filled with uncertainty. Reduce the risks, and deploy earlier and more often. Download this free guide to learn more. Brought to you in partnership with Rollbar.

Topics:

Published at DZone with permission of

Opinions expressed by DZone contributors are their own.

{{ parent.title || parent.header.title}}

{{ parent.tldr }}

{{ parent.urlSource.name }}