{"id":12212,"date":"2016-05-02T12:11:48","date_gmt":"2016-05-02T09:11:48","guid":{"rendered":"https:\/\/www.webcodegeeks.com\/?p=12212"},"modified":"2016-04-28T09:57:44","modified_gmt":"2016-04-28T06:57:44","slug":"blind-date-angularjs","status":"publish","type":"post","link":"https:\/\/www.webcodegeeks.com\/javascript\/angular-js\/blind-date-angularjs\/","title":{"rendered":"Blind Date with AngularJS"},"content":{"rendered":"<p>Are you starting to work on a new application that is using AngularJS? You have heard of it before and would like to know more about it? And have no idea where to start?<\/p>\n<p>You are in luck! Continue reading this blog and start learning this hot thing called Angular!<\/p>\n<p><a href=\"http:\/\/angularjs.org\/\">AngularJS<\/a> is a JavaScript MVC framework that has some compelling features for not only developers, but designers as well! It is great for building complex client-side applications.<\/p>\n<p>In this blog, I will talk about the most essential features and how they can help make your next web app awesome.<\/p>\n<h2>MVC<\/h2>\n<p>The <code>Model-View-Controller<\/code> pattern means a lot of different things to different people. AngularJS does not implement MVC in the traditional sense, but rather something closer to <code>M-V-VM<\/code> (Model-View-ViewModel).<\/p>\n<p>The model is simply the data in the application (JavaScript objects). There is no need to inherit from framework classes, etc. The fact that we are dealing with vanilla JavaScript is a really nice feature, which cuts down on the application boilerplate.<\/p>\n<p>The view is the HTML that exists after AngularJS has parsed and compiled the HTML to include rendered markup and bindings. The <code>$scope<\/code> has a reference to the data, the controller defines behavior, and the view handles the layout.<\/p>\n<p>A <code>viewmodel<\/code> is that <code>$scope<\/code> object that lives in the application, which is pretty much the center of any Angular code. It provides specific data and methods to maintain specific views. It is just a simple JS object with a small API which was designed any changes to its state.<\/p>\n<h2>Let\u2019s take this thing apart!<\/h2>\n<p>Now I would like to break the whole thing down and share my thought process on how I look at Angular. I look at this whole process as a person (me) putting books on the bookshelf. My hands are ultimately the JS code, the brains behind the whole operation. And the books are the objects.<\/p>\n<p>The bookshelf is going to represent the HTML code that we write according to our needs. It can be 10-20 feet tall, 5-10 feet wide, contain 5, 10 or even 20 shelves, and be green, blue, or whatever color you want it to be. This is where Angular\u2019s ng-directives, data binding and expressions come to play.<\/p>\n<h4>Expressions<\/h4>\n<pre class=\"brush:html\">&lt;div&gt;Sum of 1+1 is: {{1+1}} &lt;\/div&gt;<\/pre>\n<p>One of the first things a developer writes in Angular, other than the <code>ng-app directive<\/code>, is an expression. This is easily identified as the code written inside of a binding {{ }} or directive.<\/p>\n<p>Back to our bookshelf. Expressions will help you title the books on the shelf. So if you have an object called \u2018book\u2019 with properties like \u2018author\u2019 and \u2018title\u2019, you can populate a div just like this:<\/p>\n<pre class=\"brush:html\">&lt;div id='shelfNumber3'&gt;{{book.author}}, {{book.title}}&lt;\/div&gt;<\/pre>\n<h4>Ng-directives<\/h4>\n<p>Directives are the most important components of any AngularJS application. It is something that introduces new syntax. Directives are markers on a DOM element which attach a special behavior to it.<\/p>\n<p>For example, static HTML does not know how to create and display a date picker widget. To teach HTML this new syntax, we need a directive. The directive will somehow create an element that behaves like a date picker. We will see how this is achieved subsequently.<\/p>\n<p>If you have written an Angular application before, then you have used directives, whether you realized it or not. You might have used simple directives like <code>ng-model<\/code>, <code>ng-repeat<\/code>, <code>ng-show<\/code>, etc.<\/p>\n<p>All these directives attach special behavior to DOM elements. For example, <code>ng-repeat<\/code> repeats a specific element and <code>ng-show<\/code> conditionally shows an element. If you want to make an element draggable\/droppable, then you might create a directive for that too.<\/p>\n<p>The basic idea behind directive is very simple. It makes your HTML truly interactive by attaching event listeners to the elements and\/or transforming the DOM.<\/p>\n<h4>Data Binding<\/h4>\n<p>Data binding is the most useful and powerful feature among any of the existing or upcoming software development technologies. It is actually a process that bridges a connection between the view and business logic of the application.<\/p>\n<p>AngularJS provides some predefined data binding directives which are as follows:<\/p>\n<ul>\n<li><code>ng-bind<\/code> \u2013 Binds the inner Text property of an HTML element.<\/li>\n<li><code>ng-bind-template<\/code> \u2013 Almost similar to the ng-bind directive but allows for multiple template.<\/li>\n<li><code>ng-non-bindable<\/code> \u2013 Declares a region of content for which data binding will be skipped.<\/li>\n<li><code>ng-bind-html<\/code> \u2013 Creates data bindings using the inner HTML property of an HTML element.<\/li>\n<li><code>ng-model<\/code> \u2013 Creates a two-way data binding.<\/li>\n<\/ul>\n<h4>Controllers<\/h4>\n<p>Controllers are nothing but plain JavaScript functions. The role of controllers in Angular is to expose data to our view via <code>$scope<\/code> and to add functions to <code>$scope<\/code> that contain business logic to enhance view behavior. Presentation logic should remain within views and directives.<\/p>\n<h4>Services<\/h4>\n<p>A service provides us method to keep data across the lifetime of the angular app. It is used to organize and share data and functions across the application.<\/p>\n<h2>Let\u2019s create a simple web app using AngularJS!<\/h2>\n<p><strong>JavaScript:<\/strong><\/p>\n<pre class=\"brush:js\">var logger = require('.\/..\/service\/Logger')('BookshelfCtrl');\r\n\r\nmodule.exports = ['$scope', 'Ajax', function ($scope, Ajax) {\r\n    'use strict';\r\n\r\n       var handlers = {\r\n            error: function () {\r\n                var args = Array.prototype.slice.call(arguments);\r\n                logger.error(args);\r\n                $scope.serverError = arguments[0].message;\r\n            },\r\n            success: function (resp) {\r\n                var args = Array.prototype.slice.call(arguments);\r\n                logger.log(args);\r\n                $scope.allBookshelves = resp.bookshelves;\r\n            }\r\n        };\r\n        Ajax.getAllBooks(handlers.success, handlers.error);\r\n}];<\/pre>\n<p><strong>HTML:<\/strong><\/p>\n<pre class=\"brush:html\">&lt;body&gt;\r\n\r\n&lt;div id=\"bookShelf&gt;\r\n\r\n&lt;div data-ng-repeat=\"bookshelf in allBookshelves\" id=\u201dshelfNumber{{$index}}\u201d&gt;\r\n      &lt;span id=\"bookNumber{{$index}}\", data-ng-repeat=\"book in bookshelf.books\"&gt;{{book.title}}, {{book.author}}&lt;\/span&gt;\r\n\r\n&lt;\/div&gt;\r\n\r\n&lt;\/div&gt;\r\n\r\n&lt;\/body&gt;<\/pre>\n<p><strong>JSON object that we get:<\/strong><\/p>\n<pre class=\"brush:js\">{\r\n\t\"bookshelves\": {\r\n\t\t\"1\": [{\r\n\t\t\t\"BookOne\": [{\r\n\t\t\t\t\"title\":\"Harry Potter and the Philosopher's Stone\",\r\n\t\t\t\t\"author\": \"J.K.Rowling\"\r\n\t\t\t}],\r\n\t\t\t\"BookTwo\": [{\r\n\t\t\t\"title\":\"Harry Potter and the Chamber of Secrets\",\r\n\t\t\t\"author\":\"J.K.Rowling\"\r\n                        }]\r\n\t}],\r\n\t\"2\": [{\r\n\t\t\"BookOne\": [{\r\n\t\t\t\t\"title\":\"Harry Potter and the Prisoner of Azkaban\",\r\n\t\t\t\t\"author\":\"J.K.Rowling \"}\r\n\t\t\t],\r\n\t\t\t\"BookTwo\": [{\r\n\t\t\t   \"title\": \"Harry Potter and the Goblet of Fire\",\r\n\t\t  \t\"author\": \"J.K.Rowling\"\r\n\t\t}\r\n\t]\r\n}]\r\n}<\/pre>\n<h2>Conclusion<\/h2>\n<p>As you can see, Angular makes it pretty simple to get ahold of data and populate it into the spots that we need. HTML page gets set up, controllers start up, functions get triggered, calls are made through services, and data is returned goes back to controller functions and is spread throughout html using ng-directives.\u00a0All in all, Angular is a great, useful tool to build modern, good looking SPAs.<\/p>\n<p>I hope you found this helpful, but this is just scratching the surface of AngularJS\u2019s capabilities. If you would like to learn more about Angular, <a href=\"https:\/\/keyholesoftware.com\/category\/technology-snapshot\/javascript\/angularjs\/\">search our company blog<\/a>, or wait for my next one<\/p>\n<div class=\"attribution\">\n<table>\n<tbody>\n<tr>\n<td><span class=\"reference\">Reference: <\/span><\/td>\n<td><a href=\"https:\/\/keyholesoftware.com\/2016\/04\/25\/blind-date-with-angularjs\/\">Blind Date with AngularJS<\/a> from our <a href=\"http:\/\/www.webcodegeeks.com\/join-us\/wcg\/\">WCG partner<\/a> Chris Shatrov at the <a href=\"http:\/\/keyholesoftware.com\/\">Keyhole Software<\/a> blog.<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>Are you starting to work on a new application that is using AngularJS? You have heard of it before and would like to know more about it? And have no idea where to start? You are in luck! Continue reading this blog and start learning this hot thing called Angular! AngularJS is a JavaScript MVC &hellip;<\/p>\n","protected":false},"author":157,"featured_media":909,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[25],"tags":[],"class_list":["post-12212","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-angular-js"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v26.5 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Blind Date with AngularJS - Web Code Geeks - 2026<\/title>\n<meta name=\"description\" content=\"Are you starting to work on a new application that is using AngularJS? You have heard of it before and would like to know more about it? And have no idea\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.webcodegeeks.com\/javascript\/angular-js\/blind-date-angularjs\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Blind Date with AngularJS - Web Code Geeks - 2026\" \/>\n<meta property=\"og:description\" content=\"Are you starting to work on a new application that is using AngularJS? You have heard of it before and would like to know more about it? And have no idea\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.webcodegeeks.com\/javascript\/angular-js\/blind-date-angularjs\/\" \/>\n<meta property=\"og:site_name\" content=\"Web Code Geeks\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/webcodegeeks\" \/>\n<meta property=\"article:published_time\" content=\"2016-05-02T09:11:48+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.webcodegeeks.com\/wp-content\/uploads\/2014\/10\/angularjs-logo.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"150\" \/>\n\t<meta property=\"og:image:height\" content=\"150\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"Chris Shatrov\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@https:\/\/twitter.com\/ChrisShatrov\" \/>\n<meta name=\"twitter:site\" content=\"@webcodegeeks\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Chris Shatrov\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"6 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.webcodegeeks.com\/javascript\/angular-js\/blind-date-angularjs\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.webcodegeeks.com\/javascript\/angular-js\/blind-date-angularjs\/\"},\"author\":{\"name\":\"Chris Shatrov\",\"@id\":\"https:\/\/www.webcodegeeks.com\/#\/schema\/person\/c922fc5cc315b4475b1d1bd4166bbeba\"},\"headline\":\"Blind Date with AngularJS\",\"datePublished\":\"2016-05-02T09:11:48+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.webcodegeeks.com\/javascript\/angular-js\/blind-date-angularjs\/\"},\"wordCount\":920,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/www.webcodegeeks.com\/#organization\"},\"image\":{\"@id\":\"https:\/\/www.webcodegeeks.com\/javascript\/angular-js\/blind-date-angularjs\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.webcodegeeks.com\/wp-content\/uploads\/2014\/10\/angularjs-logo.jpg\",\"articleSection\":[\"Angular.js\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/www.webcodegeeks.com\/javascript\/angular-js\/blind-date-angularjs\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.webcodegeeks.com\/javascript\/angular-js\/blind-date-angularjs\/\",\"url\":\"https:\/\/www.webcodegeeks.com\/javascript\/angular-js\/blind-date-angularjs\/\",\"name\":\"Blind Date with AngularJS - Web Code Geeks - 2026\",\"isPartOf\":{\"@id\":\"https:\/\/www.webcodegeeks.com\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.webcodegeeks.com\/javascript\/angular-js\/blind-date-angularjs\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.webcodegeeks.com\/javascript\/angular-js\/blind-date-angularjs\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.webcodegeeks.com\/wp-content\/uploads\/2014\/10\/angularjs-logo.jpg\",\"datePublished\":\"2016-05-02T09:11:48+00:00\",\"description\":\"Are you starting to work on a new application that is using AngularJS? You have heard of it before and would like to know more about it? And have no idea\",\"breadcrumb\":{\"@id\":\"https:\/\/www.webcodegeeks.com\/javascript\/angular-js\/blind-date-angularjs\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.webcodegeeks.com\/javascript\/angular-js\/blind-date-angularjs\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.webcodegeeks.com\/javascript\/angular-js\/blind-date-angularjs\/#primaryimage\",\"url\":\"https:\/\/www.webcodegeeks.com\/wp-content\/uploads\/2014\/10\/angularjs-logo.jpg\",\"contentUrl\":\"https:\/\/www.webcodegeeks.com\/wp-content\/uploads\/2014\/10\/angularjs-logo.jpg\",\"width\":150,\"height\":150},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.webcodegeeks.com\/javascript\/angular-js\/blind-date-angularjs\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.webcodegeeks.com\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"JavaScript\",\"item\":\"https:\/\/www.webcodegeeks.com\/category\/javascript\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Angular.js\",\"item\":\"https:\/\/www.webcodegeeks.com\/category\/javascript\/angular-js\/\"},{\"@type\":\"ListItem\",\"position\":4,\"name\":\"Blind Date with AngularJS\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.webcodegeeks.com\/#website\",\"url\":\"https:\/\/www.webcodegeeks.com\/\",\"name\":\"Web Code Geeks\",\"description\":\"Web Developers Resource Center\",\"publisher\":{\"@id\":\"https:\/\/www.webcodegeeks.com\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.webcodegeeks.com\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/www.webcodegeeks.com\/#organization\",\"name\":\"Exelixis Media P.C.\",\"url\":\"https:\/\/www.webcodegeeks.com\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.webcodegeeks.com\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/www.webcodegeeks.com\/wp-content\/uploads\/2022\/06\/exelixis-logo.png\",\"contentUrl\":\"https:\/\/www.webcodegeeks.com\/wp-content\/uploads\/2022\/06\/exelixis-logo.png\",\"width\":864,\"height\":246,\"caption\":\"Exelixis Media P.C.\"},\"image\":{\"@id\":\"https:\/\/www.webcodegeeks.com\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/www.facebook.com\/webcodegeeks\",\"https:\/\/x.com\/webcodegeeks\"]},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.webcodegeeks.com\/#\/schema\/person\/c922fc5cc315b4475b1d1bd4166bbeba\",\"name\":\"Chris Shatrov\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.webcodegeeks.com\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/1223fbd361c647c7faa6df44082429a2cc204dc6f8b080bd7b23d6fc20e28f03?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/1223fbd361c647c7faa6df44082429a2cc204dc6f8b080bd7b23d6fc20e28f03?s=96&d=mm&r=g\",\"caption\":\"Chris Shatrov\"},\"description\":\"He is a developer with experience in planning, coding, testing and maintaining web applications. Doing what I love and loving what I do. Professional goal: be the best full stack programmer I can be. \\\"Never settle, always expand and progress.\\\"\",\"sameAs\":[\"https:\/\/x.com\/https:\/\/twitter.com\/ChrisShatrov\"],\"url\":\"https:\/\/www.webcodegeeks.com\/author\/chris-shatrov\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Blind Date with AngularJS - Web Code Geeks - 2026","description":"Are you starting to work on a new application that is using AngularJS? You have heard of it before and would like to know more about it? And have no idea","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.webcodegeeks.com\/javascript\/angular-js\/blind-date-angularjs\/","og_locale":"en_US","og_type":"article","og_title":"Blind Date with AngularJS - Web Code Geeks - 2026","og_description":"Are you starting to work on a new application that is using AngularJS? You have heard of it before and would like to know more about it? And have no idea","og_url":"https:\/\/www.webcodegeeks.com\/javascript\/angular-js\/blind-date-angularjs\/","og_site_name":"Web Code Geeks","article_publisher":"https:\/\/www.facebook.com\/webcodegeeks","article_published_time":"2016-05-02T09:11:48+00:00","og_image":[{"width":150,"height":150,"url":"https:\/\/www.webcodegeeks.com\/wp-content\/uploads\/2014\/10\/angularjs-logo.jpg","type":"image\/jpeg"}],"author":"Chris Shatrov","twitter_card":"summary_large_image","twitter_creator":"@https:\/\/twitter.com\/ChrisShatrov","twitter_site":"@webcodegeeks","twitter_misc":{"Written by":"Chris Shatrov","Est. reading time":"6 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.webcodegeeks.com\/javascript\/angular-js\/blind-date-angularjs\/#article","isPartOf":{"@id":"https:\/\/www.webcodegeeks.com\/javascript\/angular-js\/blind-date-angularjs\/"},"author":{"name":"Chris Shatrov","@id":"https:\/\/www.webcodegeeks.com\/#\/schema\/person\/c922fc5cc315b4475b1d1bd4166bbeba"},"headline":"Blind Date with AngularJS","datePublished":"2016-05-02T09:11:48+00:00","mainEntityOfPage":{"@id":"https:\/\/www.webcodegeeks.com\/javascript\/angular-js\/blind-date-angularjs\/"},"wordCount":920,"commentCount":0,"publisher":{"@id":"https:\/\/www.webcodegeeks.com\/#organization"},"image":{"@id":"https:\/\/www.webcodegeeks.com\/javascript\/angular-js\/blind-date-angularjs\/#primaryimage"},"thumbnailUrl":"https:\/\/www.webcodegeeks.com\/wp-content\/uploads\/2014\/10\/angularjs-logo.jpg","articleSection":["Angular.js"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.webcodegeeks.com\/javascript\/angular-js\/blind-date-angularjs\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.webcodegeeks.com\/javascript\/angular-js\/blind-date-angularjs\/","url":"https:\/\/www.webcodegeeks.com\/javascript\/angular-js\/blind-date-angularjs\/","name":"Blind Date with AngularJS - Web Code Geeks - 2026","isPartOf":{"@id":"https:\/\/www.webcodegeeks.com\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.webcodegeeks.com\/javascript\/angular-js\/blind-date-angularjs\/#primaryimage"},"image":{"@id":"https:\/\/www.webcodegeeks.com\/javascript\/angular-js\/blind-date-angularjs\/#primaryimage"},"thumbnailUrl":"https:\/\/www.webcodegeeks.com\/wp-content\/uploads\/2014\/10\/angularjs-logo.jpg","datePublished":"2016-05-02T09:11:48+00:00","description":"Are you starting to work on a new application that is using AngularJS? You have heard of it before and would like to know more about it? And have no idea","breadcrumb":{"@id":"https:\/\/www.webcodegeeks.com\/javascript\/angular-js\/blind-date-angularjs\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.webcodegeeks.com\/javascript\/angular-js\/blind-date-angularjs\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.webcodegeeks.com\/javascript\/angular-js\/blind-date-angularjs\/#primaryimage","url":"https:\/\/www.webcodegeeks.com\/wp-content\/uploads\/2014\/10\/angularjs-logo.jpg","contentUrl":"https:\/\/www.webcodegeeks.com\/wp-content\/uploads\/2014\/10\/angularjs-logo.jpg","width":150,"height":150},{"@type":"BreadcrumbList","@id":"https:\/\/www.webcodegeeks.com\/javascript\/angular-js\/blind-date-angularjs\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.webcodegeeks.com\/"},{"@type":"ListItem","position":2,"name":"JavaScript","item":"https:\/\/www.webcodegeeks.com\/category\/javascript\/"},{"@type":"ListItem","position":3,"name":"Angular.js","item":"https:\/\/www.webcodegeeks.com\/category\/javascript\/angular-js\/"},{"@type":"ListItem","position":4,"name":"Blind Date with AngularJS"}]},{"@type":"WebSite","@id":"https:\/\/www.webcodegeeks.com\/#website","url":"https:\/\/www.webcodegeeks.com\/","name":"Web Code Geeks","description":"Web Developers Resource Center","publisher":{"@id":"https:\/\/www.webcodegeeks.com\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.webcodegeeks.com\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/www.webcodegeeks.com\/#organization","name":"Exelixis Media P.C.","url":"https:\/\/www.webcodegeeks.com\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.webcodegeeks.com\/#\/schema\/logo\/image\/","url":"https:\/\/www.webcodegeeks.com\/wp-content\/uploads\/2022\/06\/exelixis-logo.png","contentUrl":"https:\/\/www.webcodegeeks.com\/wp-content\/uploads\/2022\/06\/exelixis-logo.png","width":864,"height":246,"caption":"Exelixis Media P.C."},"image":{"@id":"https:\/\/www.webcodegeeks.com\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/webcodegeeks","https:\/\/x.com\/webcodegeeks"]},{"@type":"Person","@id":"https:\/\/www.webcodegeeks.com\/#\/schema\/person\/c922fc5cc315b4475b1d1bd4166bbeba","name":"Chris Shatrov","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.webcodegeeks.com\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/1223fbd361c647c7faa6df44082429a2cc204dc6f8b080bd7b23d6fc20e28f03?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/1223fbd361c647c7faa6df44082429a2cc204dc6f8b080bd7b23d6fc20e28f03?s=96&d=mm&r=g","caption":"Chris Shatrov"},"description":"He is a developer with experience in planning, coding, testing and maintaining web applications. Doing what I love and loving what I do. Professional goal: be the best full stack programmer I can be. \"Never settle, always expand and progress.\"","sameAs":["https:\/\/x.com\/https:\/\/twitter.com\/ChrisShatrov"],"url":"https:\/\/www.webcodegeeks.com\/author\/chris-shatrov\/"}]}},"_links":{"self":[{"href":"https:\/\/www.webcodegeeks.com\/wp-json\/wp\/v2\/posts\/12212","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.webcodegeeks.com\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.webcodegeeks.com\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.webcodegeeks.com\/wp-json\/wp\/v2\/users\/157"}],"replies":[{"embeddable":true,"href":"https:\/\/www.webcodegeeks.com\/wp-json\/wp\/v2\/comments?post=12212"}],"version-history":[{"count":0,"href":"https:\/\/www.webcodegeeks.com\/wp-json\/wp\/v2\/posts\/12212\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.webcodegeeks.com\/wp-json\/wp\/v2\/media\/909"}],"wp:attachment":[{"href":"https:\/\/www.webcodegeeks.com\/wp-json\/wp\/v2\/media?parent=12212"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.webcodegeeks.com\/wp-json\/wp\/v2\/categories?post=12212"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.webcodegeeks.com\/wp-json\/wp\/v2\/tags?post=12212"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}