Hi All.
So let's start with the requirements.
Requirement: Get all the list items and display them in a specific format. (Actually here we have multiple options to satisfy this requirement including a List Viewer web part or writing a simple script in JavaScript and showing the result in either a Content Editor web part or a Script Viewer web part. Since we need to explore AngularJS and MVC patterns using it we will go with the AngularJS option.)
We can use any type list, here I am using an OOB link list as in the following:
![]()
Figure 1: OOB Link List
Since this is my first article, I'll use only one JavaScript file for now and show the results in a Content Editor web part. In the next article I'll divide code into multiple files as in the MVC architecture.
For using AngularJS we need to include a reference to the AngularJS. Either we can use it directly from CDN or download and copy it into the _layouts folder or upload into the master pages gallery like display templates. For now, I have downloaded it and copied to the _layouts/15/AngularJSDemo folder.
The following is the snippet for displaying the data (in other words, View):
- <div ng-app="list-module">  
 -     <div ng-controller="list-controller">     
 -         <ul style="list-style-type:none;">  
 -     <li ng-repeat="item in listitems" style="align:left;>   
 - {{item.URL.Description}}{{item.URL.Url}}  
 -             </li>  
 -         </ul>  
 -     </div>  
 - </div>  
 
 Here we are using the AngularJS directives, ng-app, ng-controller and ng-repeat. Here we will not go into those directives in depth. There are already some good articles on those. I have listed a few of those in the references section below.
The key point here is we are getting the list items in listitems and we are looping using ng-repeat and displaying those. Since we are using a link list, we are displaying the link URL and link description.
The next is a script for getting the list items using Rest APIs.
- <script src="_layouts/15/AngularJSDemo/angular.min.js"></script>   
 - <script type="text/javascript">     
 - var spApp= angular.module('list-module', []);     
 - spApp.controller('list-controller', function($scope, $http){    
 -     $http({  
 - url: _spPageContextInfo.webAbsoluteUrl + "/_api/lists/getbytitle('Linkit')/items",   
 -             method: "GET",  
 -         headers: { "Accept": "application/json;odata=verbose" }  
 -     }).success(function (data)   
 -     {  
 -         var dataResults = data.d.results;   
 -         $scope.listitems = dataResults;   
 -     })  
 -           .error(function (data, status, headers, config)   
 -           {     
 -                 alert("error");   
 -         });     
 - });  
 
 Result: Just snap of content editor web part. Also please bear with the UI part.
Figure 2: Link our JavaScript file in CEWP
References: 
AngularJS: 
https://angularjs.org/ https://docs.angularjs.org/misc/downloading http://www.w3schools.com/angular/angular_directives.asp $scope: 
https://docs.angularjs.org/guide/scope REST APIs:
https://msdn.microsoft.com/en-us/library/office/jj860569.aspx https://msdn.microsoft.com/en-us/library/office/fp142380.aspx https://msdn.microsoft.com/en-us/magazine/dn198245.aspx https://msdn.microsoft.com/en-us/library/office/jj164022.aspx I'll write part 2 soon explaining the MVC pattern with AngularJS. Thanks! Your feedback, suggestions, comments and/or queries are always welcome.