Using Model-View ViewModel Design Pattern in Kendo UI
Join the DZone community and get the full member experience.
Join For FreeKendo 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.
Published at DZone with permission of Sagar Ganatra, DZone MVB. See the original article here.
Opinions expressed by DZone contributors are their own.
Comments