UNPKG

angular-scaffold

Version:

Angular Scaffold is a collection of convenience wrappers around angular-model collections.

137 lines (98 loc) 3.67 kB
[![Travis Status for radify/angular-scaffold](https://travis-ci.org/radify/angular-scaffold.svg)](https://travis-ci.org/radify/angular-scaffold) [![Coverage Status](https://coveralls.io/repos/radify/angular-scaffold/badge.svg?branch=master&service=github)](https://coveralls.io/github/radify/angular-scaffold?branch=master) [![Dependency Status](https://david-dm.org/radify/angular-scaffold.svg)](https://david-dm.org/radify/angular-scaffold) [![devDependency Status](https://david-dm.org/radify/angular-scaffold/dev-status.svg)](https://david-dm.org/radify/angular-scaffold#info=devDependencies) [![Code Climate](https://codeclimate.com/github/radify/angular-scaffold/badges/gpa.svg)](https://codeclimate.com/github/radify/angular-scaffold) # Angular Scaffold ## Simple scaffolding for AngularJS **Angular Scaffold** is a collection of convenience wrappers around angular-model collections. ## Dependencies * [AngularJS](https://angularjs.org/) * [Angular Model](https://www.npmjs.com/package/angular-model) ## Running unit tests Install the test runner with npm: ```bash npm install ``` You can then run the tests with Gulp: ```bash gulp ``` You can run coverage with: ```bash gulp coverage ``` ## angular-scaffold API docs See [/docs/api.md](/docs/api.md) in this project for detailed documentation of all angular-scaffold's functions. ## Supporting angular-scaffold in your API Your API must: * Use and interpret HTTP headers correctly (e.g. HTTP PUT, POST, GET and DELETE) * Consume and return json * Supply a `$links` collection containing a `self` key, e.g.: ```json [ { "$links": { "self": { "href": "/api/posts/postaa" } }, "_id":"posta", "name":"Post A", "body":"Some content for Post A" } ] ``` ## Basic Usage In your AngularJS application, include the JavaScript: ```html // your specific paths may vary <script src="node_modules/radify/angular-model.js"></script> <script src="node_modules/radify/angular-scaffold.js"></script> ``` In your app configuration, state a dependency on [Angular Model](https://github.com/radify/angular-model) and [Angular Scaffold](https://github.com/radify/angular-scaffold): ```javascript angular.module('myApp', [ 'ur.model', 'ur.scaffold' ]); ``` Example controller using Angular Scaffold: ```javascript .controller('PostsController', function($scope, scaffold) { angular.extend($scope, { posts: scaffold('Posts', {}) }); }) ``` ## Basic CRUD example project An [example application is included in this repository](/sample-project/). It has a very simple API that illustrates a basic use case for angular-scaffold. To install and run the sample project: ```bash cd sample-project npm install node server.js ``` You can then browse to http://localhost:4730/ and add/remove Post objects from a list. angular-scaffold takes care of talking to the API for you. ## Pagination angular-scaffold can paginate your model. Your API will need to support the `Range: resources=n-n` header to take advantage of this. For example, `Range: resources=10-20` would return resources 10 through 20. ```javascript scaffold('Shares', { paginate: { size: 20, page: 1, strategy: 'paged' } }); ``` ## Querying You can pass a specific query in, which will be sent through to the API. Your API will have to know how to respond to this. ```javascript scaffold('Comments', { query: { offline: $scope.selected._id } }); ``` You can also pass in an ordering parameter. Again, your API will have to know what to do with it. ```javascript return scaffold('Shares', { query: { to: true, order: { _id: 'desc'} } }); ```