Test coucher data
by Nicolas Lips
HTML
<div ng-app="modelDemo">
<h1>
Liste
</h1>
<div ng-controller="HomeCtrl">
<ul>
<li ng-repeat="w in workspaces">
{{w.getName()}} ({{w.getMembers().length}})
</li>
</ul>
</div>
</div>
JavaScript
angular.module('modelDemo', []);
/*.
config(function ($routeProvider) {
$routeProvider.
when('/', {
controller: 'AuthorListCtrl',
templateUrl: 'list.html'
}).
otherwise({
redirectTo: '/'
});
});*/
angular.module('modelDemo').controller("HomeCtrl", ['$scope', 'workspacesDataService', function($scope, workspacesDataService) {
$scope.workspaces = workspacesDataService.workspaces;
}]);
angular.module('modelDemo').service("workspacesDataService", ['workspacesAPIService', function(workspacesAPIService) {
var memberFactory = function(rawData) {
var name = rawData.name;
return {
getName: function() {
return name;
}
}
};
var workspaceFactory = function(rawData) {
var id = rawData.id;
var name = rawData.name;
var members = null;
function _getName() {
return name;
}
function initMembers() {
members = [];
workspacesAPIService.getMembers(id)
.then(function(rawData) {
angular.forEach(rawData, function(item) {
members.push(memberFactory(item));
});
});
}
function _getMembers() {
if (members == null) {
initMembers();
}
return members;
}
return {
getName: _getName,
getMembers: _getMembers
};
};
var workspaces = [];
workspacesAPIService.getAll().then(function(rawData) {
angular.forEach(rawData, function(item) {
workspaces.push(workspaceFactory(item));
});
});
return {
workspaces: workspaces
};
}]);
angular.module('modelDemo').service("workspacesAPIService", ['$q', '$rootScope', '$http', function($q, $rootScope, $http) {
var workspaces = [
{
name: "w1",
descriptor: "{color: \"red\"}"
}
];
return {
getAll: function() {
return $http.get('https://statshbackend.azurewebsites.net/api/tnpulse/workspaces', null).then(function (response) { return response.data; });
/*return $q(function(resolve, reject) {
...