The way of the ViewModel and the Binding Learning & Development Telerik School Academy.

Slides:



Advertisements
Similar presentations
Creating Vector Graphics in the Web Learning & Development Telerik Software Academy.
Advertisements

Redundant Array of Independent Disks Borislav Varadinov Telerik Software Academy academy.telerik.com System Administrator Marian Marinov CEO of 1H Ltd.
Writing HTML made easier Telerik School Academy HTML, CSS and JavaScript.
JavaScript Development Tools
Inside Windows Boot Process Borislav Varadinov Telerik Software Academy academy.telerik.com System Administrator Marian Marinov CEO of 1H Ltd.
Guidelines to Preparing and Delivering an Elevator Pitch Presentation Svetlin Nakov Telerik Software Academy academy.telerik.com Manager Technical Training.
Two basic algorithms for path searching in a graph Telerik Algo Academy Graph Algorithms.
Binary, Decimal and Hexadecimal Numbers Svetlin Nakov Telerik Software Academy academy.telerik.com Technical Trainer
Eclipse + Android SDK, VS + Windows Phone SDK Telerik Software Academy Hybrid Mobile Applications.
Welcome to the JSON-stores world Learning & Development Telerik Software Academy.
Course Content, Evaluation, Exams Svetlin Nakov Telerik Software Academy academy.telerik.com Technical Trainer
Eclipse + Android SDK, VS + Windows Phone SDK Svetlin Nakov Telerik Software Academy academy.telerik.com Technical Trainer
Twitter Bootstrap Telerik Software Academy
Things you need to know George Georgiev Technical Trainer GeorgeAtanasov George Atanasov Front-End Developer.
Hamiltonian Cycle Penka Borukova Student at Telerik Academy.
Group Policy Borislav Varadinov Telerik Software Academy academy.telerik.com System Administrator
Reverse polish notation, Operations with big numbers Ivelin Rachev Telerik Corporation “Baba Tonka” High School of Mathematics.
April, Sofia, Telerik Software Academy Svetlin Nakov Telerik Software Academy academy.telerik.com Technical Trainer
Telerik Software Academy ASP.NET MVC.
Sales Processes, Sales Cycle and the Sales Force Margarita Antonova Volunteer Telerik Academy academy.telerik.com Business System Analyst Telerik.
Design Patterns that ease the design by identifying a simple way to realize relationships between entities. Antony Jekov Telerik Software Academy academy.telerik.com.
Using KendoUI for SPA Applications Learning & Development Telerik School Academy.
The way to create cross-platform apps Telerik School Academy Xamarin apps for iOS, Android & WinPhone.
PEST Analysis, Porter’s 5 Forces and Sustainability Strategies Margarita Antonova Volunteer Telerik Academy academy.telerik.com Business System.
Searching for a Job, Writing CV and Cover Letter, Passing a Job Interview Telerik Academy for Software Engineers October 6 th 2012 – Sofia academy.telerik.com.
Drive Partitioning Borislav Varadinov Telerik Software Academy academy.telerik.com System Administrator Marian Marinov CEO of 1H Ltd.
Telerik Software Academy Mobile apps for iPhone & iPad.
Google APIs and Facebook API Ivaylo Kenov Penka Borukova Telerik Corporation Telerik Academy Students.
The magic of virtual machines Borislav Varadinov Telerik Software Academy academy.telerik.com System Administrator Marian Marinov CEO of 1H Ltd.
Web development with ExpressJS Learning & Development Telerik School Academy.
What it is, and does it work Learning & Development Telerik School Academy.
Device APIs with Xamarin
Telerik Software Academy Mobile apps for iPhone & iPad.
Academy.telerik.com Class of , Fall 2013.
Telerik Software Academy Databases.
Google APIs and Facebook API Ivaylo Kenov Penka Borukova Telerik Corporation Telerik Academy Students.
Telerik Software Academy ASP.NET Web Forms.
What are WinJS and WinRT, Using the APIs in JavaScript George Georgiev Telerik Software Academy academy.telerik.com Technical Trainer itgeorge.net.
JavaScript Modules and Patterns Telerik Software Academy
The True power of dynamic web pages Learning & Development Team Telerik Software Academy.
Approximate string matching Evlogi Hristov Telerik Corporation Student at Telerik Academy.
Xamarin with SQLite Telerik School Academy Xamarin apps for iOS, Android & WinPhone.
Know your Tools! Telerik Software Academy JavaScript Fundamentals.
Ivaylo Kenov Telerik Software Academy Technical Assistant.
Developing "evil" JavaScript applications Learning & Development Telerik School Academy.
Process and Writing Styles Tina Stancheva Doroteya Agayna Telerik Software Academy academy.telerik.com Writing Documentation.
The PhoneGap History Doncho Minkov Telerik Software Academy Technical Trainer
Building Rock-Solid Software Svetlin Nakov Telerik Software Academy Manager Technical Training
Cultivating Professionals for Your Company The Success Story of Telerik Svetlin Nakov, PhD Manager Technical Training Telerik Corp.
Telerik School Academy Xamarin apps for iOS, Android & WinPhone.
AJAX with ASP.NET MVC Telerik Software Academy
Nencho Nenchev Doroteya Agayna Telerik Software Academy Telerik Support Leads.
Installation, Sample Usage, Strings and OOP Telerik Software Academy Software Quality Assurance.
In JavaScript Learning & Development Telerik Software Academy.
Services in AngularJS Telerik Software Academy
Svetlin Nakov Telerik Software Academy Manager Technical Training
What is Roslyn and how can we use it? Telerik Academy Plus C# 6.0 and Roslyn Seminar.
Splitting JavaScript into Dependent Modules Learning & Development Telerik Software Academy.
Changing the default visualization of views in Xamarin.Forms Telerik School Academy Xamarin apps for iOS, Android & WinPhone.
Telerik Software Academy HTML5.
What to expect from the new IDE Telerik Academy Plus Visual Studio 2015 and ASP.NET 5.
Hristian Hristov Telerik Corporation
I have to use math? I am out of here… Telerik School Academy Unity 2D Game Development.
Monitoring Server Performance Organizing Your Support Model Borislav Varadinov Telerik Software Academy academy.telerik.com System Administrator
Automating Windows Deployment Borislav Varadinov Telerik Software Academy academy.telerik.com System Administrator
Server Roles and Features Borislav Varadinov Telerik Software Academy academy.telerik.com System Administrator
Binary, Decimal and Hexadecimal Numbers Telerik Software Academy C# Fundamentals – Part 2.
Nikolay Kostov Telerik Software Academy academy.telerik.com Team Lead, Senior Developer and Trainer
Adding UI and Audio element Telerik Academy Plus Unity 2D Game Development.
Dimo Dimov Support Lead, Kendo UI Telerik Telerik Software Academy
Presentation transcript:

The way of the ViewModel and the Binding Learning & Development Telerik School Academy

 The MVVM design pattern  Model, View, ViewModel  Kendo MVVM framework  KendoUI views  Observable objects  Binding Views and ViewModels  Views and ViewModels in external files  Initializing Views with ViewModels

 The MVVM pattern is a descendant of the MVC design pattern  Allows implementation of multilayer architecture  Uses separation of concerns (SoC) for higher developer performance  Divides application logic in multiple dedicated layers (modules) for easier extension and bug- fixing  Each layers has its own and cohesive purpose

 Model-View-ViewModel has three primary layers:  Model  Contains data models - JSON  View  Contains UI logic (HTML,CSS, UI JS)  Binds to the ViewModel  ViewModel  Contains business logic  Keeps models of data, Views get what they need  Plays the role of the middleman

ViewModel (data communication, business logic) Model (holds the data) View (HTML, CSS, UI JavaScript) Binds to Uses

 MVVM was designed mostly for use in WPF/Silverlight, but its usable in JavaScript as well  Kendo.UI  Kendo UI Mobile  Knockout.js  Knockback.js

Model – View – View Model

 Model  Represents data (database models, objects)  View Model  Fetches the data (from server, db, etc…)  And saves it into the Model  Exposes the data to the View  May have logic and functionality  View  Knows of the ViewModel  Represents UI (buttons, inputs, etc.)

 Model – kendo.data.DataSource  View Model – kendo.observable(JsonObject)  Object – has properties for the View  May have functions for manipulating data  View - kendo.View  string (template id)  string (template id) and ViewModel

 Creating a View and a ViewModel  HTML: … … </section> var viewModel = { title: '…', title: '…', url: '…', url: '…', content: …' }; content: …' }; kendo.bind($('#view'), viewModel);  JavaScript:

Live Demos

 Data-binding is the term for linking data to UI  Changes to any of them are applied to both  KendoUI has a powerful data-binding system  Bind HTML attributes, data-sources, etc  Done with the data-bind attribute  For a two-way data-binding the data must be an observable object  A regular JavaScript object, wrapper into kendo.observable

 HTML </script> var vm = kendo.observable({ make: '…', power: '…', make: '…', power: '…', checked: true, checked: true, added: false added: false}); Kendo.bind(view, vm);  JavaScript

Live Demo

 Data-binding can be done not just for attributes and properties  Methods can also be data-bound to events like click, load, change, hover, etc:  HTML … … var vm = kendo.observable({ … showInfo: function(){ showInfo: function(){ … }});  JavaScript

Live Demo

 The ViewModel can easily be separated into multiple JavaScript files  The js code can be split into modules  Yet, having the HTML of all views into one page is hard for maintenance and extension  And the HTML code is harder to split into external files  The solution?  Creating a Views loader

 Load a view by path and cache it  If it was already loaded, then return the cached function loadView(path) { if(cached[path]){ if(cached[path]){ return cached[path] return cached[path] } HTTP GET path HTTP GET path success: save in cached success: save in cached return result; return result;}

Live Demo

 Dynamic changing of views is hard  Kendo MVVM has a kendo.Layout that fixes the problem  kendo.Layout is something like a master page, that has one or many placeholders  This placeholders can be filled with kendo.View

 Create the layout: var layoutHTML = ' ' + ' Title ' + ' Title ' + ' '+ ' '+ ' ', ' ', layout = kendo.Layout(layoutHTML); layout = kendo.Layout(layoutHTML); layout.render('#root');  Render it in div#root in the HTML page: layout.showIn('#main-nav', navView);  Initialize the NAV view: layout.showIn('#page', homeView);  Show the HOME view on the page

Live Demo

форум програмиране, форум уеб дизайн курсове и уроци по програмиране, уеб дизайн – безплатно програмиране за деца – безплатни курсове и уроци безплатен SEO курс - оптимизация за търсачки уроци по уеб дизайн, HTML, CSS, JavaScript, Photoshop уроци по програмиране и уеб дизайн за ученици ASP.NET MVC курс – HTML, SQL, C#,.NET, ASP.NET MVC безплатен курс "Разработка на софтуер в cloud среда" BG Coder - онлайн състезателна система - online judge курсове и уроци по програмиране, книги – безплатно от Наков безплатен курс "Качествен програмен код" алго академия – състезателно програмиране, състезания ASP.NET курс - уеб програмиране, бази данни, C#,.NET, ASP.NET курсове и уроци по програмиране – Телерик академия курс мобилни приложения с iPhone, Android, WP7, PhoneGap free C# book, безплатна книга C#, книга Java, книга C# Николай Костов - блог за програмиране

1. Create a SPA application for a social network  The application must have users  Users have username and password  Save the users in the browsers' localStorage  When a user is logs in, they can either view their images, or upload another images  Images have url and title  Save the images' data in localStorage  To be continued on the next slide

1. *cont. Create a SPA application for a social network  The application must have atleast 3 views  Login/Register view  Shown if the user is not logged in  Images view  Show all the images of the user  Upload an image view  Implement the application using Kendo MVVM