{"id":14843,"date":"2016-10-10T16:15:47","date_gmt":"2016-10-10T13:15:47","guid":{"rendered":"http:\/\/www.webcodegeeks.com\/?p=14843"},"modified":"2017-12-19T16:17:49","modified_gmt":"2017-12-19T14:17:49","slug":"angular-js-todo-app-example","status":"publish","type":"post","link":"https:\/\/www.webcodegeeks.com\/javascript\/angular-js\/angular-js-todo-app-example\/","title":{"rendered":"Angular.js Todo App Example"},"content":{"rendered":"<p>These days, Todo Apps are considered much like the former &#8220;Hello World!&#8221;, which means that a considerable part of the programming community uses Todo apps as a mean to get started with using a particular technology, especially in front end.<\/p>\n<p>This\u00a0is one of the reasons why the number of Todo apps available on the internet by now is reaching very outstanding numbers. However, for a variety of reasons, these apps are often obsolete and do not help people actually do their tasks at all. How can you build a Todo app of your own, which serves not only as the start to learning a programming technology, but also to be used afterwards? Let&#8217;s see!<br \/>\n&nbsp;<br \/>\n&nbsp;<br \/>\n[ulp id=&#8217;LXJcMJZXSsqGXYW8&#8242;]<\/p>\n<h2>1. Why build Todo Apps?<\/h2>\n<p>By now we have hundreds of apps ranging from simple lists of things that need to be done, to apps that curse at you until you complete the tasks you have yet to do. But why build these apps at all? It\u2019s remarkably fulfilling to spend so much time organizing and planning instead of actually getting stuff done. I&#8217;m not the only one who does that! Actually doing these tasks that you have listed is all what matters, and time has proven that actually writing them in to todo lists doesn&#8217;t actually help do them. In particular, the iDoneThis startup revealed that over 41% of the tasks placed into its system were never completed. So why do so many programmers build them?<\/p>\n<p>First things first, as a programmer, the reason why I built my first Todo App was as a rite of passage of learning a new programming language, which is a more common reason than you&#8217;d think. Trailing closely after the <code>Hello world<\/code>, the <code>Echo<\/code>, and the simple calculator examples, creating a TODO list is one of the rite of passage entering the world of whatever language or environment. Let&#8217;s see how to implement a TODO using AngularJS.<\/p>\n<h2>2. What we&#8217;re doing<\/h2>\n<p>The Todo App we&#8217;ll be building is a very usual shopping list, one that you can later on adapt into a more and more complex app, until it grows to the point of screeching at you when you leave something unfinished. Kids, these days! So where do we start?<\/p>\n<h3>2.1 Getting started<\/h3>\n<p>Before getting on the crust of building a todo app, we will have to do some preparing first, get the field ready. Let&#8217;s create a very basic <code>index.html<\/code> main file, in which except for the customary HTML structure, we also place the <code>angular.min.j<\/code>s file, making it look like below:<\/p>\n<p><span style=\"text-decoration: underline;\"><em>index.html<\/em><\/span><\/p>\n<pre class=\"brush:xml\"> \r\n&lt;!DOCTYPE html&gt;\r\n&lt;html lang=\"en\"&gt;\r\n&lt;head&gt;\r\n    &lt;meta charset=\"UTF-8\"&gt;\r\n    &lt;title&gt;TodoApp&lt;\/title&gt;\r\n\r\n    &lt;script src=\"https:\/\/ajax.googleapis.com\/ajax\/libs\/angularjs\/1.4.8\/angular.min.js\"&gt;&lt;\/script&gt;\r\n    \r\n&lt;\/head&gt;\r\n&lt;body&gt;\r\n\r\n&lt;\/body&gt;\r\n&lt;\/html&gt;\r\n<\/pre>\n<p>The first real step would be to create an Angular app, which we&#8217;re calling <code>myShoppingList<\/code> and add a controller named <code>myCtrl<\/code> to it. That would be done using the code below, after first having created a custom Javascript file named <code>app.js<\/code>:<\/p>\n<p><span style=\"text-decoration: underline;\"><em>app.js<\/em><\/span><\/p>\n<pre class=\"brush:js\"> \r\nvar app = angular.module(\"myShoppingList\", []); \r\napp.controller(\"myCtrl\", function($scope) {\r\n    $scope.products = [\"Milk\", \"Bread\", \"Cheese\"];\r\n});\r\n<\/pre>\n<p>In the first line of the code above we have actually created the module for our app, and the rest is just creating a simple controller. Our controller is pretty simple: its only function being to add an array of <code>products<\/code> to the already existing <code>$scope<\/code> of it. We have placed <code>Milk<\/code>, <code>Bread<\/code> and <code>Cheese<\/code> as default values, which can be changed at will by our user.<\/p>\n<p>But this is only the back part, the one invisible. How do we make all of this appear on the app?<\/p>\n<h3>2.2 HTML to make miracles visible<\/h3>\n<p>Let&#8217;s get back to the HTML file and make some changes there, in order to make it possible for all the Angular stuff to be linked to the view. First of all, do not forget to script the file in, or just use one file for all if you&#8217;re more comfortable like that. Take a look at the snippet below:<\/p>\n<p><span style=\"text-decoration: underline;\"><em>index.html<\/em><\/span><\/p>\n<pre class=\"brush:xml\">&lt;div ng-app=\"myShoppingList\" ng-controller=\"myCtrl\"&gt;\r\n    &lt;ul&gt;\r\n        &lt;li ng-repeat=\"x in products\"&gt;{{x}}&lt;\/li&gt;\r\n    &lt;\/ul&gt;\r\n&lt;\/div&gt;\r\n<\/pre>\n<p>We have placed the <code>ng-app=\"myShoppingList\"<\/code> inside a <code>div<\/code> tag in order to make that into the Angular App, everything outside of it is not considered Angular. Except for that you see that we have placed also <code>ng-controller=\"myCtrl\"<\/code> in order to show the jurisdiction of the controller, and this is how we know that everything inside that is changeable by this controller.<\/p>\n<p>What we see except for these, is an unordered list made of each product in the <code>products<\/code> array. Even though all you see there looks like a single list item, the <code>ng-repeat=\"x in products\"<\/code> makes it possible for this to be repeated as many times as there are items in the array. The rest is a simple Angular expression that displays the value of the <code>x<\/code> variable.<\/p>\n<h2>3. Adding Items<\/h2>\n<p>After setting the field, what&#8217;s left is learning how to add and delete items from a list. But let&#8217;s start with adding and then go on from there, since it is much more possible for you to be involved in a new thing for which you have things to do, than actually do previous ones in your list!<\/p>\n<p>This will be done by making changes both in the HTML main file and also in the custom Javascript file where we have stored previous Angular.js code. First of all, let&#8217;s focus on the main file. We add the code snippet below just after the unordered list:<\/p>\n<p><span style=\"text-decoration: underline;\"><em>index.html<\/em><\/span><\/p>\n<pre class=\"brush:xml\">&lt;input ng-model=\"addMe\"&gt;\r\n&lt;button ng-click=\"addItem()\"&gt;Add&lt;\/button&gt;\r\n<\/pre>\n<p>What we have done here is add an input field after the list of items and bound that to our application using the <code>ng-model<\/code> directive. After that we have placed a button, which uses the <code>ng-click<\/code> directive in order to help it run the <code>addItem<\/code> function. Haven&#8217;t heard it before?<\/p>\n<p>As we said, there is still a part of adding items to our list that we have not dealt with yet. That would be the function <code>addItem()<\/code> and <code>addMe<\/code>. The code would go like this:<\/p>\n<p><span style=\"text-decoration: underline;\"><em>app.js<\/em><\/span><\/p>\n<pre class=\"brush:js\">$scope.addItem = function () {\r\n        $scope.products.push($scope.addMe);\r\n    }\r\n<\/pre>\n<p>We add this inside our controller, just after stating our array items. As you see, we have created a function named <code>addItem()<\/code> which uses the value of <code>addMe<\/code> that the user has put in the input field and adds it to the list of products that we have specified before. With this, now the user is fully able to add new items to the shopping list you just created!<\/p>\n<h2>4. Removing Items<\/h2>\n<p>Removing items from a Todo list is just as easy as adding them, and also performed into two small tasks: changing the HTML main file and changing the <code>app.js<\/code> file. This time we&#8217;ll start by creating a function that removes items from your list by using an index for each of them as a parameter. The code would go like below:<\/p>\n<p><span style=\"text-decoration: underline;\"><em>app.js<\/em><\/span><\/p>\n<pre class=\"brush:js\">$scope.removeItem = function (x) {\r\n        $scope.products.splice(x, 1);\r\n    }\r\n<\/pre>\n<p>The code would go right after the <code>addItem()<\/code> function inside the controller, and simply removes the item with the index passed as a parameter to it. What is a bit more different than usual is the HTML part of removing an item from the list. What we do is nest the code snippet below inside the <code>&lt;li&gt;<\/code> tag, right after the expression in double brackets:<\/p>\n<p><span style=\"text-decoration: underline;\"><em>app.js<\/em><\/span><\/p>\n<pre class=\"brush:js\">&lt;span ng-click=\"removeItem($index)\"&gt;\u00d7&lt;\/span&gt;\r\n<\/pre>\n<p>In the HTML, what we do is simply make a <code>&lt;span&gt;<\/code> element for each item, and give them an <code>ng-click<\/code> directive which calls the <code>removeItem()<\/code> function with the current <code>$index<\/code>. Easy, right?<\/p>\n<h2>5. Handling Errors<\/h2>\n<p>Our app works! But not quite, unfortunately. There are cases such as when the user tries to enter the same item twice or when the item to be entered is an empty one, that the app wouldn&#8217;t work. In these cases, what we usually do is put out a warning or an alert of some type to let the user know of this. In order to do that, we would have to make some small changes in the code that we have used for our controller.<\/p>\n<p>The inside of our function for adding items in the list should now be replaced with the code snippet below:<\/p>\n<p><span style=\"text-decoration: underline;\"><em>app.js<\/em><\/span><\/p>\n<pre class=\"brush:js\">$scope.errortext = \"\";\r\n        if (!$scope.addMe) {return;}\r\n        if ($scope.products.indexOf($scope.addMe) == -1) {\r\n            $scope.products.push($scope.addMe);\r\n        } else {\r\n            $scope.errortext = \"The item is already in your shopping list.\";\r\n        }\r\n<\/pre>\n<p>What you see above means that, firstly, if the value of <code>addMe<\/code> is empty, then to not take any action, and not include the empty string in the list. The second part of it is an <code>if-else<\/code> conditional, meaning that in case the item that you want to add to the list is not previously there (or its index is -1, the default for invalid indexes) then you do add it, but if it already is, you just show a message to the user alerting them that the item is on the list already.<\/p>\n<p>The next change would be that of the <code>removeItem()<\/code> function. The code for the contents of this function would go like below:<\/p>\n<p><span style=\"text-decoration: underline;\"><em>app.js<\/em><\/span><\/p>\n<pre class=\"brush:js\">$scope.errortext = \"\";\r\n$scope.products.splice(x, 1);\r\n<\/pre>\n<p>In this case we simply present the user with an empty string instead of an <code>errortext<\/code>, which we know would take the value <code>This item is already on the list!<\/code> in case of an actual error, and the rest of it is just the same. Now you have a handy Todo app in your hands, made entirely of AngularJS, that would look like below:<\/p>\n<figure id=\"attachment_14860\" aria-describedby=\"caption-attachment-14860\" style=\"width: 566px\" class=\"wp-caption aligncenter\"><a href=\"http:\/\/www.webcodegeeks.com\/wp-content\/uploads\/2016\/10\/Capture.jpg\"><img decoding=\"async\" class=\"size-full wp-image-14860\" src=\"http:\/\/www.webcodegeeks.com\/wp-content\/uploads\/2016\/10\/Capture.jpg\" alt=\"Todo App\" width=\"566\" height=\"355\" srcset=\"https:\/\/www.webcodegeeks.com\/wp-content\/uploads\/2016\/10\/Capture.jpg 566w, https:\/\/www.webcodegeeks.com\/wp-content\/uploads\/2016\/10\/Capture-300x188.jpg 300w\" sizes=\"(max-width: 566px) 100vw, 566px\" \/><\/a><figcaption id=\"caption-attachment-14860\" class=\"wp-caption-text\">Todo App<\/figcaption><\/figure>\n<p>Which, admittedly, is not the coolest-looking one, but you can work on its view yourself! The inner-workings are exactly the same, and you now have a very functional Todo App! Congrats on this milestone of your learning experience!<\/p>\n<h2>6. Download the source code<\/h2>\n<p>This was an example of a Todo App in Angular.js.<\/p>\n<div class=\"download\"><strong>Download<\/strong><br \/>\nYou can download the full source code of this example here:\u00a0<strong><a href=\"http:\/\/www.webcodegeeks.com\/wp-content\/uploads\/2016\/10\/todoapp.zip\">todoapp<\/a><\/strong><\/div>\n","protected":false},"excerpt":{"rendered":"<p>These days, Todo Apps are considered much like the former &#8220;Hello World!&#8221;, which means that a considerable part of the programming community uses Todo apps as a mean to get started with using a particular technology, especially in front end. This\u00a0is one of the reasons why the number of Todo apps available on the internet &hellip;<\/p>\n","protected":false},"author":25,"featured_media":909,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[25],"tags":[],"class_list":["post-14843","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>Angular.js Todo App Example - Web Code Geeks - 2026<\/title>\n<meta name=\"description\" content=\"These days, Todo Apps are considered much like the former &quot;Hello World!&quot;, which means that a considerable part of the programming community uses Todo apps\" \/>\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\/angular-js-todo-app-example\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Angular.js Todo App Example - Web Code Geeks - 2026\" \/>\n<meta property=\"og:description\" content=\"These days, Todo Apps are considered much like the former &quot;Hello World!&quot;, which means that a considerable part of the programming community uses Todo apps\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.webcodegeeks.com\/javascript\/angular-js\/angular-js-todo-app-example\/\" \/>\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:author\" content=\"https:\/\/www.facebook.com\/era.balliu.7\" \/>\n<meta property=\"article:published_time\" content=\"2016-10-10T13:15:47+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2017-12-19T14:17:49+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=\"Era Balliu\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@BalliuEra\" \/>\n<meta name=\"twitter:site\" content=\"@webcodegeeks\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Era Balliu\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"9 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\/angular-js-todo-app-example\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.webcodegeeks.com\/javascript\/angular-js\/angular-js-todo-app-example\/\"},\"author\":{\"name\":\"Era Balliu\",\"@id\":\"https:\/\/www.webcodegeeks.com\/#\/schema\/person\/c27ecf40c810e6396ba93ffb829c7b0e\"},\"headline\":\"Angular.js Todo App Example\",\"datePublished\":\"2016-10-10T13:15:47+00:00\",\"dateModified\":\"2017-12-19T14:17:49+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.webcodegeeks.com\/javascript\/angular-js\/angular-js-todo-app-example\/\"},\"wordCount\":1528,\"commentCount\":3,\"publisher\":{\"@id\":\"https:\/\/www.webcodegeeks.com\/#organization\"},\"image\":{\"@id\":\"https:\/\/www.webcodegeeks.com\/javascript\/angular-js\/angular-js-todo-app-example\/#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\/angular-js-todo-app-example\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.webcodegeeks.com\/javascript\/angular-js\/angular-js-todo-app-example\/\",\"url\":\"https:\/\/www.webcodegeeks.com\/javascript\/angular-js\/angular-js-todo-app-example\/\",\"name\":\"Angular.js Todo App Example - Web Code Geeks - 2026\",\"isPartOf\":{\"@id\":\"https:\/\/www.webcodegeeks.com\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.webcodegeeks.com\/javascript\/angular-js\/angular-js-todo-app-example\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.webcodegeeks.com\/javascript\/angular-js\/angular-js-todo-app-example\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.webcodegeeks.com\/wp-content\/uploads\/2014\/10\/angularjs-logo.jpg\",\"datePublished\":\"2016-10-10T13:15:47+00:00\",\"dateModified\":\"2017-12-19T14:17:49+00:00\",\"description\":\"These days, Todo Apps are considered much like the former \\\"Hello World!\\\", which means that a considerable part of the programming community uses Todo apps\",\"breadcrumb\":{\"@id\":\"https:\/\/www.webcodegeeks.com\/javascript\/angular-js\/angular-js-todo-app-example\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.webcodegeeks.com\/javascript\/angular-js\/angular-js-todo-app-example\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.webcodegeeks.com\/javascript\/angular-js\/angular-js-todo-app-example\/#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\/angular-js-todo-app-example\/#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\":\"Angular.js Todo App Example\"}]},{\"@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\/c27ecf40c810e6396ba93ffb829c7b0e\",\"name\":\"Era Balliu\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.webcodegeeks.com\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/f6adddf7eada210f682608fea9d8159441369ec622998a5851a447e0a2bfa3f3?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/f6adddf7eada210f682608fea9d8159441369ec622998a5851a447e0a2bfa3f3?s=96&d=mm&r=g\",\"caption\":\"Era Balliu\"},\"description\":\"Era is a Telecommunications Engineering student, with a great passion for new technologies. Up until now she has been coding with HTML\/CSS, Bootstrap and other front-end coding languages and frameworks, and her recent love is Angular JS.\",\"sameAs\":[\"http:\/\/www.webcodegeeks.com\/\",\"https:\/\/www.facebook.com\/era.balliu.7\",\"https:\/\/www.instagram.com\/eraballiu\/\",\"https:\/\/www.linkedin.com\/in\/eraballiu\",\"https:\/\/www.pinterest.com\/001r2gw0jt0ln6d\/\",\"https:\/\/x.com\/BalliuEra\",\"https:\/\/www.youtube.com\/c\/eraballiu\"],\"url\":\"https:\/\/www.webcodegeeks.com\/author\/era-balliu\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Angular.js Todo App Example - Web Code Geeks - 2026","description":"These days, Todo Apps are considered much like the former \"Hello World!\", which means that a considerable part of the programming community uses Todo apps","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\/angular-js-todo-app-example\/","og_locale":"en_US","og_type":"article","og_title":"Angular.js Todo App Example - Web Code Geeks - 2026","og_description":"These days, Todo Apps are considered much like the former \"Hello World!\", which means that a considerable part of the programming community uses Todo apps","og_url":"https:\/\/www.webcodegeeks.com\/javascript\/angular-js\/angular-js-todo-app-example\/","og_site_name":"Web Code Geeks","article_publisher":"https:\/\/www.facebook.com\/webcodegeeks","article_author":"https:\/\/www.facebook.com\/era.balliu.7","article_published_time":"2016-10-10T13:15:47+00:00","article_modified_time":"2017-12-19T14:17:49+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":"Era Balliu","twitter_card":"summary_large_image","twitter_creator":"@BalliuEra","twitter_site":"@webcodegeeks","twitter_misc":{"Written by":"Era Balliu","Est. reading time":"9 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.webcodegeeks.com\/javascript\/angular-js\/angular-js-todo-app-example\/#article","isPartOf":{"@id":"https:\/\/www.webcodegeeks.com\/javascript\/angular-js\/angular-js-todo-app-example\/"},"author":{"name":"Era Balliu","@id":"https:\/\/www.webcodegeeks.com\/#\/schema\/person\/c27ecf40c810e6396ba93ffb829c7b0e"},"headline":"Angular.js Todo App Example","datePublished":"2016-10-10T13:15:47+00:00","dateModified":"2017-12-19T14:17:49+00:00","mainEntityOfPage":{"@id":"https:\/\/www.webcodegeeks.com\/javascript\/angular-js\/angular-js-todo-app-example\/"},"wordCount":1528,"commentCount":3,"publisher":{"@id":"https:\/\/www.webcodegeeks.com\/#organization"},"image":{"@id":"https:\/\/www.webcodegeeks.com\/javascript\/angular-js\/angular-js-todo-app-example\/#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\/angular-js-todo-app-example\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.webcodegeeks.com\/javascript\/angular-js\/angular-js-todo-app-example\/","url":"https:\/\/www.webcodegeeks.com\/javascript\/angular-js\/angular-js-todo-app-example\/","name":"Angular.js Todo App Example - Web Code Geeks - 2026","isPartOf":{"@id":"https:\/\/www.webcodegeeks.com\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.webcodegeeks.com\/javascript\/angular-js\/angular-js-todo-app-example\/#primaryimage"},"image":{"@id":"https:\/\/www.webcodegeeks.com\/javascript\/angular-js\/angular-js-todo-app-example\/#primaryimage"},"thumbnailUrl":"https:\/\/www.webcodegeeks.com\/wp-content\/uploads\/2014\/10\/angularjs-logo.jpg","datePublished":"2016-10-10T13:15:47+00:00","dateModified":"2017-12-19T14:17:49+00:00","description":"These days, Todo Apps are considered much like the former \"Hello World!\", which means that a considerable part of the programming community uses Todo apps","breadcrumb":{"@id":"https:\/\/www.webcodegeeks.com\/javascript\/angular-js\/angular-js-todo-app-example\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.webcodegeeks.com\/javascript\/angular-js\/angular-js-todo-app-example\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.webcodegeeks.com\/javascript\/angular-js\/angular-js-todo-app-example\/#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\/angular-js-todo-app-example\/#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":"Angular.js Todo App Example"}]},{"@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\/c27ecf40c810e6396ba93ffb829c7b0e","name":"Era Balliu","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.webcodegeeks.com\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/f6adddf7eada210f682608fea9d8159441369ec622998a5851a447e0a2bfa3f3?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/f6adddf7eada210f682608fea9d8159441369ec622998a5851a447e0a2bfa3f3?s=96&d=mm&r=g","caption":"Era Balliu"},"description":"Era is a Telecommunications Engineering student, with a great passion for new technologies. Up until now she has been coding with HTML\/CSS, Bootstrap and other front-end coding languages and frameworks, and her recent love is Angular JS.","sameAs":["http:\/\/www.webcodegeeks.com\/","https:\/\/www.facebook.com\/era.balliu.7","https:\/\/www.instagram.com\/eraballiu\/","https:\/\/www.linkedin.com\/in\/eraballiu","https:\/\/www.pinterest.com\/001r2gw0jt0ln6d\/","https:\/\/x.com\/BalliuEra","https:\/\/www.youtube.com\/c\/eraballiu"],"url":"https:\/\/www.webcodegeeks.com\/author\/era-balliu\/"}]}},"_links":{"self":[{"href":"https:\/\/www.webcodegeeks.com\/wp-json\/wp\/v2\/posts\/14843","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\/25"}],"replies":[{"embeddable":true,"href":"https:\/\/www.webcodegeeks.com\/wp-json\/wp\/v2\/comments?post=14843"}],"version-history":[{"count":0,"href":"https:\/\/www.webcodegeeks.com\/wp-json\/wp\/v2\/posts\/14843\/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=14843"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.webcodegeeks.com\/wp-json\/wp\/v2\/categories?post=14843"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.webcodegeeks.com\/wp-json\/wp\/v2\/tags?post=14843"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}