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

Get the senior executive’s handbook of important trends, tips, and strategies to compete and win in the digital economy.

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.

Read this guide to learn everything you need to know about RPA, and how it can help you manage and automate your processes.

Topics:

Published at DZone with permission of Sagar Ganatra, DZone MVB. See the original article here.

Opinions expressed by DZone contributors are their own.

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

{{ parent.tldr }}

{{ parent.urlSource.name }}