Simple Angular App Example, Disconnected and Mocked inline html and javascript
simply clone the repo locally and
git clone https://gist.github.com/6755421.git AngularStandalone
cd AngularStandalone
open index.html
<!DOCTYPE html> | |
<meta charset="utf-8"> | |
<body> | |
<h4>Simplest Angular App - Standalone and Disconnected</h4> | |
<div ng-app="myApp"> | |
<span ng-controller="UserCtrl"> | |
<ul> | |
<li ng-repeat="user in users">{{user.userId}}: {{user.userName}}</li> | |
<button ng-click="addUser()">Add user (HTTP PUT)</button> | |
</ul> | |
</span> | |
</div> | |
<script src="http://code.angularjs.org/1.1.1/angular.js"></script> | |
<script src="http://code.angularjs.org/1.1.1/angular-mocks.js"></script> | |
<script> | |
'use strict'; | |
// ' Backend ' | |
var myApp = angular.module('myApp', []); | |
// You can use provide to blanket replace $httpBackend with the mock | |
myApp | |
.config(function($provide) { | |
// Decorate by passing in the constructor for mock $httpBackend | |
$provide.decorator('$httpBackend', createHttpBackendMock); | |
}); | |
// Mark urls that match regexp as a match, | |
// you can pass this as the url argument to $httpBackend.[when|expect] | |
angular.module('myApp') | |
.run(function($httpBackend, $timeout) { | |
var regexpUrl = function(regexp) { | |
return { | |
test: function(url) { | |
this.matches = url.match(regexp); | |
return this.matches && this.matches.length > 0; | |
} | |
}; | |
}; | |
//******************************************* | |
// Allow JSONP to pass to external services (ie Solr) | |
$httpBackend.when('JSONP', regexpUrl(/http:\/\/.*/)) | |
.passThrough(); | |
// Some statefullness | |
var users = {}; | |
var userId = 0; | |
$httpBackend.when('PUT', '/users') | |
.respond(function(method, url, data) { | |
data = angular.fromJson(data); | |
users[userId] = {userName: data.userName, userId: userId}; | |
userId++; | |
return [200, users[data.userId]]; | |
}); | |
$httpBackend.when('GET', regexpUrl(/users\/(\d+)/)) | |
.respond(function(method, url, data) { | |
data = angular.fromJson(data); | |
return [200, users[data.userId]]; | |
}); | |
$httpBackend.when('GET', '/users') | |
.respond(function(method, url, data) { | |
return [200, users]; | |
}); | |
// A "run loop" of sorts to get httpBackend to | |
// issue responses and trigger the client code's callbacks | |
var flushBackend = function() { | |
try { | |
$httpBackend.flush(); | |
} catch (err) { | |
// ignore that there's nothing to flush | |
} | |
$timeout(flushBackend, 500); | |
}; | |
$timeout(flushBackend, 500); | |
}); | |
// Angular APP, | |
// An actual angular app you might write using standard $http service | |
myApp | |
.controller("UserCtrl", function($scope, $http) { | |
$scope.users = {} | |
var addedUsers = 0; | |
// Add a user | |
$scope.addUser = function() { | |
var names = ["Matt", "Jeff", "Mark", "Shivai", "James", "Vicki"]; | |
var sentData = {userName: names[addedUsers++ % 9]}; | |
$http.put('/users', sentData).success(function(data) { | |
$scope.users[data.userId] = data.userName; | |
}); | |
}; | |
// Get a list of all the users | |
$http.get('/users').success(function(data) { | |
console.log("GOT: " + data); | |
$scope.users = data; | |
}); | |
}); | |
</script> | |
</body> | |