From 551fa0e205a0146072b67fc02bffce2cd5f2f0f8 Mon Sep 17 00:00:00 2001 From: Hannah Ingham Date: Thu, 21 Feb 2019 20:35:53 -0800 Subject: [PATCH 1/4] adding counter angular app --- README.md | 303 +++---------------------------------------- app/app.css | 27 ++++ app/app.js | 45 +++++-- app/index-async.html | 2 +- app/index.html | 51 ++------ 5 files changed, 90 insertions(+), 338 deletions(-) diff --git a/README.md b/README.md index 2898d89b5f..aa860aca49 100644 --- a/README.md +++ b/README.md @@ -1,297 +1,28 @@ -# `angular-seed` — the seed for AngularJS apps -This project is an application skeleton for a typical [AngularJS][angularjs] web app. You can use it -to quickly bootstrap your angular webapp projects and dev environment for these projects. +# Angular Counter -The seed contains a sample AngularJS application and is preconfigured to install the AngularJS -framework and a bunch of development and testing tools for instant web development gratification. +## Angular Description: The architecture of Angular v1 is based on the Model-View-Controller pattern (MVC). -The seed app doesn't do much, just shows how to wire two controllers and views together. +### Description: Angular 1 app that renders a counter and dynamically updates counter based on button clicked. -## Getting Started +### Modules: +* index.html -- renders the counter and buttons +* app.js -- creates a modules and controllers that store data that can be rendered -To get you started you can simply clone the `angular-seed` repository and install the dependencies: +### Pros Angular 1 +* two way binding--changes to view are displayed in model +* reduces burden for CPU because of +* easily testable websites -### Prerequisites +### Cons +* could take time to grap +* limited documentation make learning more difficult +* directives (markers on a DOM element) in angular can be difficult to use -You need git to clone the `angular-seed` repository. You can get git from [here][git]. +[Forked From Angular Seed Project](https://github.com/angular/angular-seed) -We also use a number of Node.js tools to initialize and test `angular-seed`. You must have Node.js -and its package manager (npm) installed. You can get them from [here][node]. +[Counter Angular Example](https://code-maven.com/automatic-counter-using-angularjs) -### Clone `angular-seed` -Clone the `angular-seed` repository using git: - -``` -git clone https://github.com/angular/angular-seed.git -cd angular-seed -``` - -If you just want to start a new project without the `angular-seed` commit history then you can do: - -``` -git clone --depth=1 https://github.com/angular/angular-seed.git -``` - -The `depth=1` tells git to only pull down one commit worth of historical data. - -### Install Dependencies - -We have two kinds of dependencies in this project: tools and AngularJS framework code. The tools -help us manage and test the application. - -* We get the tools we depend upon and the AngularJS code via `npm`, the [Node package manager][npm]. -* In order to run the end-to-end tests, you will also need to have the - [Java Development Kit (JDK)][jdk] installed on your machine. Check out the section on - [end-to-end testing](#e2e-testing) for more info. - -We have preconfigured `npm` to automatically copy the downloaded AngularJS files to `app/lib` so we -can simply do: - -``` -npm install -``` - -Behind the scenes this will also call `npm run copy-libs`, which copies the AngularJS files and -other front end dependencies. After that, you should find out that you have two new directories in -your project. - -* `node_modules` - contains the npm packages for the tools we need -* `app/lib` - contains the AngularJS framework files and other front end dependencies - -*Note copying the AngularJS files from `node_modules` to `app/lib` makes it easier to serve the -files by a web server.* - -### Run the Application - -We have preconfigured the project with a simple development web server. The simplest way to start -this server is: - -``` -npm start -``` - -Now browse to the app at [`localhost:8000/index.html`][local-app-url]. - - -## Directory Layout - -``` -app/ --> all of the source files for the application - app.css --> default stylesheet - core/ --> all app specific modules - version/ --> version related components - version.js --> version module declaration and basic "version" value service - version_test.js --> "version" value service tests - version-directive.js --> custom directive that returns the current app version - version-directive_test.js --> version directive tests - interpolate-filter.js --> custom interpolation filter - interpolate-filter_test.js --> interpolate filter tests - view1/ --> the view1 view template and logic - view1.html --> the partial template - view1.js --> the controller logic - view1_test.js --> tests of the controller - view2/ --> the view2 view template and logic - view2.html --> the partial template - view2.js --> the controller logic - view2_test.js --> tests of the controller - app.js --> main application module - index.html --> app layout file (the main html template file of the app) - index-async.html --> just like index.html, but loads js files asynchronously -e2e-tests/ --> end-to-end tests - protractor-conf.js --> Protractor config file - scenarios.js --> end-to-end scenarios to be run by Protractor -karma.conf.js --> config file for running unit tests with Karma -package.json --> Node.js specific metadata, including development tools dependencies -package-lock.json --> Npm specific metadata, including versions of installed development tools dependencies -``` - - -## Testing - -There are two kinds of tests in the `angular-seed` application: Unit tests and end-to-end tests. - -### Running Unit Tests - -The `angular-seed` app comes preconfigured with unit tests. These are written in [Jasmine][jasmine], -which we run with the [Karma][karma] test runner. We provide a Karma configuration file to run them. - -* The configuration is found at `karma.conf.js`. -* The unit tests are found next to the code they are testing and have a `.spec.js` suffix (e.g. - `view1.spec.js`). - -The easiest way to run the unit tests is to use the supplied npm script: - -``` -npm test -``` - -This script will start the Karma test runner to execute the unit tests. Moreover, Karma will start -watching the source and test files for changes and then re-run the tests whenever any of them -changes. -This is the recommended strategy; if your unit tests are being run every time you save a file then -you receive instant feedback on any changes that break the expected code functionality. - -You can also ask Karma to do a single run of the tests and then exit. This is useful if you want to -check that a particular version of the code is operating as expected. The project contains a -predefined script to do this: - -``` -npm run test-single-run -``` - - - -### Running End-to-End Tests - -The `angular-seed` app comes with end-to-end tests, again written in [Jasmine][jasmine]. These tests -are run with the [Protractor][protractor] End-to-End test runner. It uses native events and has -special features for AngularJS applications. - -* The configuration is found at `e2e-tests/protractor-conf.js`. -* The end-to-end tests are found in `e2e-tests/scenarios.js`. - -Protractor simulates interaction with our web app and verifies that the application responds -correctly. Therefore, our web server needs to be serving up the application, so that Protractor can -interact with it. - -**Before starting Protractor, open a separate terminal window and run:** - -``` -npm start -``` - -In addition, since Protractor is built upon WebDriver, we need to ensure that it is installed and -up-to-date. The `angular-seed` project is configured to do this automatically before running the -end-to-end tests, so you don't need to worry about it. If you want to manually update the WebDriver, -you can run: - -``` -npm run update-webdriver -``` - -Once you have ensured that the development web server hosting our application is up and running, you -can run the end-to-end tests using the supplied npm script: - -``` -npm run protractor -``` - -This script will execute the end-to-end tests against the application being hosted on the -development server. - -**Note:** -Under the hood, Protractor uses the [Selenium Standalone Server][selenium], which in turn requires -the [Java Development Kit (JDK)][jdk] to be installed on your local machine. Check this by running -`java -version` from the command line. - -If JDK is not already installed, you can download it [here][jdk-download]. - - -## Updating AngularJS and other dependencies - -Since the AngularJS framework library code and tools are acquired through package managers (e.g. -npm) you can use these tools to easily update the dependencies. Simply run the preconfigured script: - -``` -npm run update-deps -``` - -This will call `npm update` and `npm run copy-libs`, which in turn will find and install the latest -versions that match the version ranges specified in the `package.json` file. - -If you want to update a dependency to a version newer than what the specificed range would permit, -you can change the version range in `package.json` and then run `npm run update-deps` as usual. - - -## Loading AngularJS Asynchronously - -The `angular-seed` project supports loading the framework and application scripts asynchronously. -The special `index-async.html` is designed to support this style of loading. For it to work you must -inject a piece of AngularJS JavaScript into the HTML page. The project has a predefined script to help -do this: - -``` -npm run update-index-async -``` - -This will copy the contents of the `angular-loader.js` library file into the `index-async.html` -page. You can run this every time you update the version of AngularJS that you are using. - - -## Serving the Application Files - -While AngularJS is client-side-only technology and it is possible to create AngularJS web apps that -do not require a backend server at all, we recommend serving the project files using a local -web server during development to avoid issues with security restrictions (sandbox) in browsers. The -sandbox implementation varies between browsers, but quite often prevents things like cookies, XHR, -etc to function properly when an HTML page is opened via the `file://` scheme instead of `http://`. - -### Running the App during Development - -The `angular-seed` project comes preconfigured with a local development web server. It is a Node.js -tool called [http-server][http-server]. You can start this web server with `npm start`, but you may -choose to install the tool globally: - -``` -sudo npm install -g http-server -``` - -Then you can start your own development web server to serve static files from any folder by running: - -``` -http-server -a localhost -p 8000 -``` - -Alternatively, you can choose to configure your own web server, such as Apache or Nginx. Just -configure your server to serve the files under the `app/` directory. - -### Running the App in Production - -This really depends on how complex your app is and the overall infrastructure of your system, but -the general rule is that all you need in production are the files under the `app/` directory. -Everything else should be omitted. - -AngularJS apps are really just a bunch of static HTML, CSS and JavaScript files that need to be -hosted somewhere they can be accessed by browsers. - -If your AngularJS app is talking to the backend server via XHR or other means, you need to figure -out what is the best way to host the static files to comply with the same origin policy if -applicable. Usually this is done by hosting the files by the backend server or through -reverse-proxying the backend server(s) and web server(s). - - -## Continuous Integration - -### Travis CI - -[Travis CI][travis] is a continuous integration service, which can monitor GitHub for new commits to -your repository and execute scripts such as building the app or running tests. The `angular-seed` -project contains a Travis configuration file, `.travis.yml`, which will cause Travis to run your -tests when you push to GitHub. - -You will need to enable the integration between Travis and GitHub. See the -[Travis website][travis-docs] for instructions on how to do this. - - -## Contact - -For more information on AngularJS please check out [angularjs.org][angularjs]. - - -[angularjs]: https://angularjs.org/ -[git]: https://git-scm.com/ -[http-server]: https://github.com/indexzero/http-server -[jasmine]: https://jasmine.github.io/ -[jdk]: https://wikipedia.org/wiki/Java_Development_Kit -[jdk-download]: http://www.oracle.com/technetwork/java/javase/downloads -[karma]: https://karma-runner.github.io/ -[local-app-url]: http://localhost:8000/index.html -[node]: https://nodejs.org/ -[npm]: https://www.npmjs.org/ -[protractor]: http://www.protractortest.org/ -[selenium]: http://docs.seleniumhq.org/ -[travis]: https://travis-ci.org/ -[travis-docs]: https://docs.travis-ci.com/user/getting-started +[Githug](https://github.com/hingham/counter-angular) \ No newline at end of file diff --git a/app/app.css b/app/app.css index 48e881d4ec..8f8bfac8e9 100644 --- a/app/app.css +++ b/app/app.css @@ -23,3 +23,30 @@ content: "|"; padding-right: 0.3em; } + +body{ + margin: 50; + background-color: rgb(250, 250, 200); +} + +.counter { + background-color: rgb(88, 73, 103); + color: white; + height: 50px; + width: 50px; + font-size: 2em; + text-align: center; + border-radius: 10px; +} + +.positive { + background-color: rgb(70, 60, 80); +} + +.positive { + background-color: green; +} + + + + diff --git a/app/app.js b/app/app.js index 3a0ca2557e..2dcc78eab3 100644 --- a/app/app.js +++ b/app/app.js @@ -1,14 +1,31 @@ -'use strict'; - -// Declare app level module which depends on views, and core components -angular.module('myApp', [ - 'ngRoute', - 'myApp.view1', - 'myApp.view2', - 'myApp.version' -]). -config(['$locationProvider', '$routeProvider', function($locationProvider, $routeProvider) { - $locationProvider.hashPrefix('!'); - - $routeProvider.otherwise({redirectTo: '/view1'}); -}]); +// Define the `phonecatApp` module +var phonecatApp = angular.module('phonecatApp', []); + +// Define the `PhoneListController` controller on the `phonecatApp` module +phonecatApp.controller('PhoneListController', function PhoneListController($scope) { + $scope.phones = [ + { + name: 'Counter', + snippet: 'click to count!' + } + ]; +}); + + +// var phonecatApp = angular.module("phonecatApp", []); + + +// phonecatApp.controller("PhoneListController", function PhoneListController($scope) { + +// $scope.counter = 0; +// $scope.decrement = function() { +// $scope.counter--; +// }; +// $scope.phones = [ +// { +// name: 'Counter', +// snippet: 'click to count!' +// } +// ]; + +// }) diff --git a/app/index-async.html b/app/index-async.html index e66b69c302..92159fddf8 100644 --- a/app/index-async.html +++ b/app/index-async.html @@ -38,7 +38,7 @@ 'core/version/interpolate-filter.js' ], function() { // when all is done, execute bootstrap AngularJS application - angular.bootstrap(document, ['myApp']); + angular.bootstrap(document, ['phonecatApp']); }); My AngularJS App diff --git a/app/index.html b/app/index.html index 091d5a2df5..d86c5616d2 100644 --- a/app/index.html +++ b/app/index.html @@ -1,43 +1,20 @@ - - - - - + - - - My AngularJS App - - - - - - + + + - - - - - -
+ -
AngularJS seed app: v
+
+ + +
+ + +
{{counter}}
+
- - - - - - - - - + From a93b65694de66651b970ee1ebee8c6aa8346980c Mon Sep 17 00:00:00 2001 From: niesssiobhan Date: Thu, 21 Feb 2019 23:04:58 -0800 Subject: [PATCH 2/4] added to the readme --- README.md | 23 ++++++++++++++++++++++- assets/template.png | Bin 0 -> 50276 bytes 2 files changed, 22 insertions(+), 1 deletion(-) create mode 100644 assets/template.png diff --git a/README.md b/README.md index aa860aca49..48dced7b0d 100644 --- a/README.md +++ b/README.md @@ -10,6 +10,24 @@ * index.html -- renders the counter and buttons * app.js -- creates a modules and controllers that store data that can be rendered +### AngularJS v1.3 +* framework for dynamic web apps +* using HTML as the template language and extend HTML's syntax to express application's components clearly +* it is a great declaritive language for static documents +* attempts to minimize the impedance mismatch between document centric HTML and what an application needs creating new HTML constructs + +### Using the Service +* you will need to add it as a dependancy for the component that depends on the service + +### Data Binding +* sync data between the model and the view +* data-binding lets you treat the model as a single source of truth within your application state + * this simplifies the programming model for the developer +* the template is compiled on the browser +* any changes that are made to the view are instantly reflected in the model and then any changes that are made in the model are generated to the view +* the controller is separated from the view and is unaware of this +![angular templates](./assets/template.png) + ### Pros Angular 1 * two way binding--changes to view are displayed in model * reduces burden for CPU because of @@ -20,9 +38,12 @@ * limited documentation make learning more difficult * directives (markers on a DOM element) in angular can be difficult to use +### Rating +* 5 out of 10 +* Documantion was difficult to find, this would make it hard and would be time consuming for a team of developers to implement a new feature in this framework + [Forked From Angular Seed Project](https://github.com/angular/angular-seed) [Counter Angular Example](https://code-maven.com/automatic-counter-using-angularjs) - [Githug](https://github.com/hingham/counter-angular) \ No newline at end of file diff --git a/assets/template.png b/assets/template.png new file mode 100644 index 0000000000000000000000000000000000000000..3a9c6d1ecc2514d855b2384ffb279c1083359928 GIT binary patch literal 50276 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
*6oT0`S-j1^e^Dm?<{Wxng~O)hYmV$y zY(HDZW%sT}uMa=pcn$h%?AcPUag}saA0YjJ3V^$ zmDBrn>(~cD4#8uN45F&7@9K9STTwcvs?=b}awWc2*`lF=CeQtXP1J0)O5_oWfYAPQ zUAAfCMrlcj+`&#~Cl3rXZwH79>IU`10+$=%(aPOAf`OC^HZv}+YO9P%jOlQRKB`v= z=9~5_o#k)5yP(PMifL!f&^zz`dUXa*9JkAm2AfF%R^zIC;@Mf9D}ptonIg%SWtT)Z z)j&oLxJ@Q`bCZa>yX_>^X5OeZ>mBs!z%dL7McxbBwvw76KA8zfQWBmi9OSP=POS%uc=#O9QcB;X)4Z*~5cZ`7E*%zZJ`A`1lR&_CAoY_pkWy zAqhNNNUd-`rx_eIxwmD^X4g7Zz4u+eguoK{u~`?PICQ^QII zvOeQn!WZ=%A~yH|8ryUqN(=E||Ha}_I9#-b41v?dh4gs;MYi&R8w%hLtQqFDDdOs> zq59o^weS_fLFOmqh2N|CGTYjBc#j`}ty6YRYd;}EX|+vHe}7Yl9+~NDj+_V|9H!Uu zBJ4QNbNS|5T#C-|)}Ow9b%Kq15@nE9;&R!h-R!!Z0xA>haA4@Nzkjs9hdf~*CKE>K zkkHVg^HTRMrz-i5=W)SlUEaO>g}>`3Dc9;}K962Idb3AeQ<3&w`2klHyKm^-es|}& zmlP%h+KzG#G}w6dLcd`;KfQ;pCI&1*#G>F4Mf&<|A zxbXE`?ObS^epM-)K{We*5mAr8#3L@ep;>D zn6)@m}6suuHns)-^St*?@u}c zz6?;k87|AuEqccIBgBZ}l`uc5J!xJ1PdCB6fGd}ab%WYR&lhhP^twt(Z~YD_Evfub ztxhXX&E8pYR4rsjM_=9LFFyH4Z!FXR)tlwosv0~1`idVTSYe?KS3Ot+%MKJRxJ)5J zR8~%Sr@>oMzyDH^4s<2sDImGbz-a=w1=4?U$7>?Dq(}8juTx7$D9}Q5TmAe(>F=tj zqks1lG)bpEGkA05`18Y){anqu9^7YMtT=K(o%2D5n$`!;l;cA#N}u|?P1Q68^c9^G zee^U4SMjDNtRAf>MuFINN_8-Chb{h6bwC*DMnDB8d?m#tutV&}SX%1uAPVUR)XwQX|=vD~T002q4f|0A8%%`h!Qb^&k9+%F+0n4$nsSzNr{-BL9j-)5M0cRm znQ-c-{e^tP=|gPR?fu%r&ve)AvaTDo6~AqMaBA(-@;%Gu`QF>;U6HtM|3+<(jHO9G zqA$iOZ69HBJ+5!Sqn-IHx~-h{WAXY=&jt(m0vn*jS0Y+wDWMkghaMruv}lzOG9eZG zKp;u8k0fz^e+LumTpC@BAG!9@%wftiE?Xh2;-wBuwgyP0ckf}^ zU0+!?D>HLxYx8fg+ipAPoZmNk*179Rv~L;uwe;sb=h}O%!>nfgt@Um{AmPyEhpSKB z>GE!?qFzMc#NJ8Mch}sBNp&1m)o(x-iTCAc|5w+QheOrB{mItY zXY9!`ma#7*YiMkvjNKSpNtThVvR7n8XwZV8q$q2$M5Uw@A)!rSNSlaCl1PuTH1B=< z-anrAcU`aRa`|Jv=bV}2%=cbC%Wbb*KqNihHxtswOHAM#pJhE;@TDXI?W3l)b^>mF zWkbVh@LfSHbpgksmDK&1Z(xOkjr0T{JT%zkfR1LpTMahvw@ z(ZBm5d^V5^0p}Va0U{nX@C*U*=SmWPu3ms?9Ao$Z`PCu5IlUh^t;2CX=ZO_J6SDk^5`-? ziFnDERI8lx-cNV>4v?x5Uuz&!0k=gL_64ZN0c(Yl4Gdt5;h7<7Zvrn9&^;qeOt5!B z6j8Q~UWMxLC0V44E+!)8wNIudU_SP*O$l{(}dD)cI1833E5dWx9y(8@@BFRAykHzQ-GdR ztf}y6I;g!%v-wFj7g$Dvu`Uqyq0bJ_7|5j6w6ti*Xa*SLy`=~;FlY_~a?*QvW)L$N z3O^qZ7#|e6M^}4}uD-v%O&oIigUT^u^d;yXJqBzUY3TqB51A-ipYPIwDM08B!F`O# zpB_v2XGEy+p+@wEuR@RXX{)2(tYii3=F{96Roq8jiH~{nB zp^?Wy$8Pgl7OmQ)tV7Y+L#6-e-fyh>x*K3_(f@SRmq&gw*@Mt5*c23g~g@)dr8} z2AA#uL}rPzWR->cYO7Y-Hd`osU{vn2lR@ujD>yd#ym5y6?(4F>X3BfXB+MdXr|y}} zl|AQt2=Q%k2V}3h&JzpRg2X+%P2USSK6(US3z8Lc%&5ULs|J(AjI`74%iAow_HAPg zYSaHdkeH_1j-++#7@y6hnF+%^TE73hSw#dF5C1vz1!0W%WeOF`y^?5UuP zZryXmwGIl9^6lU_0QlMZct+3`B0N-3BLb2DrWgvH2Q6rGg6(52;8dJyi8=WxIW!f; zb7E4u_MJNRI4)P|NNKAmkI=^a*@%xeNEY)qqul`C;AYXE_n>g`T_(oB(6Mf&`~FrzFf3m(+Rk$&u7~=Y_wqL zS>#Lnrqy;f1c+X z)VUme*&&_9(#dl_qGVuf8GdoHd0@KTFWr!NL`y1tSo8%;r8`o`E&Y(`x9{H}80drl zEEFST5S+kPhy*^U4<+kZwa$lOKV8K@bRI`c_+dM*2Ie8)lE9A38ks>DoFJBfoD5u4 z5W>raXDTao-Ch2K#c;kMFCfh2AZiSNEFlAqJ8jtf;@i^Fpr%-Xuf6&mX5E$R&i0?T zC8HOK)G#*6ge;V1# zx(H&USPT_3M%>~9?bgn#V6dK!ggFo@BgVdv%XNWEErij|nO}%u;>@oF+Hm+SuzI@l z-R92`=w~7`E5yC#|0E$8I}pv`2L6oS*m7ujiF@Fy{}-`7Tk293%`on!ogR93dVmfk z{{BUR@u}_h)B9`T3#9U9q&rpm$3N-hv!M?@=gCP6mU6F+@CQ2QiS2UJkc==Gh(2G> zocX5M`*2{oZIjFRW`R7p_biqzJoV7R2E#z-OGGCyYAxnQBc>||2^Bz=p=3FY)GNRH zMjWo51qdH-`8&|@LaB$afiMO1ZBStYodq&p_l6DFuzRq@Lm))#MYh^CDCdBWTNCgN z5H~BR!%XO3hq@nJBSck-Ro9GeNKCtFDXg*lx)U9nFxuYCB`su^8ksh=S#dhrVc3Cs zuaYPutLq~@TU|EQGTAI*sB~4e{j9s5L;IT`{KD6LXWsg|J&(-njF)a+(^VGATcU2Uo36gZssy`G8JfE)4viE;6DjoK*ETl7c_#Q-lEGcwV-uUws{Ub ze7#F2&+551S-x)Mu~f=$N4tJT$xM|%-OCaCVXFta+#O~+{l8GvTTkG`98*i=I}57_ z<9qwgu%?*AH!-Uhv>Ma3dZqE)KXYaawZKhHu}V9VylJP`yHR#{_;SkFTu=C|$KT!N z0moAK1?Hko4Z@&a`%0tolDew|0)rSlQy=e8i+p;fKf_KhE;}{>raD82tEBMxs3GGs9K)4A(e}JE_n?!XFH`|A8}A`o7<)>o1^Win4fRR44pU^(N6qS zO1=8tMH?#!gKW?$d$yi}hRJ`hC+POG%3Y!J#+PLd8eg9~F?cAK5rF_uv@#5?4PqQ*zP2@Z=bU{g^sKq@62Dz{hA~m-Qk&qZ z9aS8b`5qKjNs^{AE!jQzVga}DnsjrUCihpfHj_YRPj?Ui0zbC$jsg zt80y8o4?K6-?V2&l}AaGR4QL96LIrJ@_BDMrfF10Z?{(lpR1XOUz@RC9pWYexI9@U zC+e8nWsc7w!VdKODaXDD9Cm&u*k5tNpYVcReu#$TFV5MVSXtBuQ1?GTC@Qj@8MI|Hs|olfMvb3N#K@QugeM5 z;c>KrFpI+td1#Po19V4S5EEB!x^g7|YfxlD^xRGp^kDPS1J+Rc>o>J6mXl>0+9jX; zBdjJ+4C8057kSd&ra0ELUuI?^2wsrXsYk>WM@`LF(4~iweoft-lk*?djBaE7x_%BM8h1B& z1!}FF%Z~3K$kV@QIjpAM)ms`ay}JPYyR1TdHY-g^i2ev;BdLGc1+S{<&^EWd!mZi5 zpg~I)4a#yWEhW`Q8M zUUl`xOZ^PLMlg@cIQ`rin2W?luLIZXM9A#+_E5`eRvBxWCabC7UQUf~_SOQ@F&N8E zSc%_9liqn;LGSS=0katT7F|%=h^QU&tvA|b$ButVu(O5ZAFrqx@dD@w?tai3MRF-F z#R=Tkon_W4xls$QeWVO2PB4tJ#HEbx6LMQ%h2L6eU_q00a8OA!^O_}9v-0TJuBr=#@|7*7tp?Ukq>;BZrI&5nW?d8`8mn5YWZ`0Fk3X*ucujo>A< zT%+<=9@XWVIGT4J7{8N(snb>pe1pe(`TOpsZ-+c}b2 zZVyTIb~oWNSLz(kV!mt5H%VK1MK|kJ3L8gk05>xT7==%&{A!*g21r#n9K%-s&jhPWMi1{lgUMLKXy56uCBbJd; z1RO05d!tA|6*ImO#*&vq*RWaiH@eO%*_k z3E-~@cU?x9zyIMNW5vqWxuuV$2*M8N)-OP%P1(Ks83?AOw#Fy}wD8r^U9u!L(K&-p zd=2UPLNfvR000C-9}Zz_0VgbzEUtL1!HdaoeQ!|Y2n+^j4FK^JA~)jS0Rm!}Ns&jd z)SzB*Et?oXq9aVWHo8zm2;hJY!h^j{echGg({B}Y>Z4|rAa(rwI|R6rx8HzF7y;+N z-t114V~aL*3EqST)z?>!YdjSmtN(E1fO(*3WF!HcB~iN;jiwahsskW|#cy;MRyJ%k z)6~;*6X|#7?^(Zgxe7LTf!b1x_(B1ghUGR4mh}8B$y>yya8k8i6d)uZ7Xes<< zaH%UThkI={u|5A;!XVhqW__Z;P?NX#g=`aV}4QpEq)l)w%bzSJmA{@WA z{b7ISGRA5V!%zBSJ1&4nBV6@giNT`>Jnrs7KD&;fCaLDB%=Akyvmp9!Nj?!?RScGz zGkKT7OIm;3nPb|)+kI8WFGFrYwgX+)e%QVyUfI`k{9)PU`C7PMclQptapm%x+Y2ho z3^WqyEHA1lBwwQh_Vd!`_D^U{n1kvyK;Sz-3o3;3wg3N zw0wD*xrQy|A33mKd0b;9mo}8BlpG~3Wy0tk@p9L1Um(Ugat+5jC2fj z47K$LxGe<2Ru~JWt*4K3(=)<_#sRHNR~K9(bi$D3@C(azB4a`-aQ!84N-5-&)X@0- zfu^RU$e{TB!3W|@O#c=@ENdD_Q|GUO3 zj20J)GBDY?tASqwmTdah5~r~J!Ep&u!Kn3jr5kl1#Nvjh^M9Ski3+PwdRt5gCPsSt zhWgj@h(oYM Date: Thu, 21 Feb 2019 23:07:37 -0800 Subject: [PATCH 3/4] update --- README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/README.md b/README.md index 48dced7b0d..a025d4b6c9 100644 --- a/README.md +++ b/README.md @@ -26,6 +26,8 @@ * the template is compiled on the browser * any changes that are made to the view are instantly reflected in the model and then any changes that are made in the model are generated to the view * the controller is separated from the view and is unaware of this + + ![angular templates](./assets/template.png) ### Pros Angular 1 From b02ec293cfd88aa3f05fb7b232417260c6546c68 Mon Sep 17 00:00:00 2001 From: niesssiobhan Date: Thu, 21 Feb 2019 23:15:02 -0800 Subject: [PATCH 4/4] added link --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index a025d4b6c9..df18ac544e 100644 --- a/README.md +++ b/README.md @@ -18,6 +18,7 @@ ### Using the Service * you will need to add it as a dependancy for the component that depends on the service +* follow the tutorial instructions from [angularjs v1.3](https://code.angularjs.org/1.3.0/docs/tutorial/) to install on your local computer ### Data Binding * sync data between the model and the view