Skip to content

Commit 0b4e109

Browse files
committed
Fixes #60.
1 parent 8895040 commit 0b4e109

File tree

10 files changed

+172
-109
lines changed

10 files changed

+172
-109
lines changed

CHANGELOG.md

+1
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
- #52 - DS.update(resourceName, id, attrs[, options]) (different from DS.save())
99
- #54 - Adding functionality to resources
1010
- #56 - DS.updateAll(resourceName, attrs, params[, options])
11+
- #60 - DSHttpAdapterProvider.defaults is undefined
1112

1213
##### 0.8.1 - 02 May 2014
1314

Gruntfile.js

+4-2
Original file line numberDiff line numberDiff line change
@@ -217,14 +217,16 @@ module.exports = function (grunt) {
217217
'guide/angular-data/overview.doc',
218218
'guide/angular-data/resources.doc',
219219
'guide/angular-data/synchronous.doc',
220-
'guide/angular-data/asynchronous.doc'
220+
'guide/angular-data/asynchronous.doc',
221+
'guide/angular-data/how.doc'
221222
],
222223
rank: {
223224
index: 1,
224225
overview: 2,
225226
resources: 3,
226227
synchronous: 4,
227-
asynchronous: 5
228+
asynchronous: 5,
229+
how: 6
228230
}
229231
},
230232
{

dist/angular-data.js

+68-52
Original file line numberDiff line numberDiff line change
@@ -1208,66 +1208,82 @@ var toString = require('../lang/toString');
12081208
*/
12091209
function DSHttpAdapterProvider() {
12101210

1211-
this.$get = ['$http', '$log', 'DSUtils', function ($http, $log, DSUtils) {
1211+
/**
1212+
* @doc property
1213+
* @id DSHttpAdapterProvider.properties:defaults
1214+
* @name defaults
1215+
* @description
1216+
* Default configuration for this adapter.
1217+
*
1218+
* Properties:
1219+
*
1220+
* - `{function}` - `serialize` - See [the guide](/documentation/guide/adapters/index). Default: No-op.
1221+
* - `{function}` - `deserialize` - See [the guide](/documentation/guide/adapters/index). Default: No-op.
1222+
* - `{function}` - `queryTransform` - See [the guide](/documentation/guide/adapters/index). Default: No-op.
1223+
*/
1224+
var defaults = this.defaults = {
1225+
/**
1226+
* @doc property
1227+
* @id DSHttpAdapterProvider.properties:defaults.serialize
1228+
* @name defaults.serialize
1229+
* @description
1230+
* Your server might expect a custom request object rather than the plain POJO payload. Use `serialize` to
1231+
* create your custom request object.
1232+
*
1233+
* ## Example:
1234+
* ```js
1235+
* DSHttpAdapterProvider.defaults.serialize = function (data) {
1236+
* return {
1237+
* payload: data
1238+
* };
1239+
* };
1240+
* ```
1241+
*
1242+
* @param {object} data Data to be sent to the server.
1243+
* @returns {*} Returns `data` as-is.
1244+
*/
1245+
serialize: function (data) {
1246+
return data;
1247+
},
12121248

12131249
/**
12141250
* @doc property
1215-
* @id DSHttpAdapterProvider.properties:defaults
1216-
* @name defaults
1251+
* @id DSHttpAdapterProvider.properties:defaults.deserialize
1252+
* @name defaults.deserialize
12171253
* @description
1218-
* Default configuration for this adapter.
1254+
* Your server might return a custom response object instead of the plain POJO payload. Use `deserialize` to
1255+
* pull the payload out of your response object so angular-data can use it.
12191256
*
1220-
* Properties:
1257+
* ## Example:
1258+
* ```js
1259+
* DSHttpAdapterProvider.defaults.deserialize = function (data) {
1260+
* return data ? data.payload : data;
1261+
* };
1262+
* ```
12211263
*
1222-
* - `{function}` - `serialize` - See [the guide](/documentation/guide/adapters/index). Default: No-op.
1223-
* - `{function}` - `deserialize` - See [the guide](/documentation/guide/adapters/index). Default: No-op.
1224-
* - `{function}` - `queryTransform` - See [the guide](/documentation/guide/adapters/index). Default: No-op.
1264+
* @param {object} data Response object from `$http()`.
1265+
* @returns {*} Returns `data.data`.
12251266
*/
1226-
var defaults = this.defaults = {
1227-
/**
1228-
* @doc property
1229-
* @id DSHttpAdapterProvider.properties:defaults.serialize
1230-
* @name defaults.serialize
1231-
* @description
1232-
* Your server might expect a custom request object rather than the plain POJO payload. Use `serialize` to
1233-
* create your custom request object.
1234-
*
1235-
* @param {object} data Data to be sent to the server.
1236-
* @returns {*} Returns `data` as-is.
1237-
*/
1238-
serialize: function (data) {
1239-
return data;
1240-
},
1267+
deserialize: function (data) {
1268+
return data.data;
1269+
},
12411270

1242-
/**
1243-
* @doc property
1244-
* @id DSHttpAdapterProvider.properties:defaults.deserialize
1245-
* @name defaults.deserialize
1246-
* @description
1247-
* Your server might return a custom response object instead of the plain POJO payload. Use `deserialize` to
1248-
* pull the payload out of your response object so angular-data can use it.
1249-
*
1250-
* @param {object} data Response object from `$http()`.
1251-
* @returns {*} Returns `data.data`.
1252-
*/
1253-
deserialize: function (data) {
1254-
return data.data;
1255-
},
1271+
/**
1272+
* @doc property
1273+
* @id DSHttpAdapterProvider.properties:defaults.queryTransform
1274+
* @name defaults.queryTransform
1275+
* @description
1276+
* Transform the angular-data query to something your server understands. You might just do this on the server instead.
1277+
*
1278+
* @param {object} query Response object from `$http()`.
1279+
* @returns {*} Returns `query` as-is.
1280+
*/
1281+
queryTransform: function (query) {
1282+
return query;
1283+
}
1284+
};
12561285

1257-
/**
1258-
* @doc property
1259-
* @id DSHttpAdapterProvider.properties:defaults.queryTransform
1260-
* @name defaults.queryTransform
1261-
* @description
1262-
* Transform the angular-data query to something your server understands. You might just do this on the server instead.
1263-
*
1264-
* @param {object} query Response object from `$http()`.
1265-
* @returns {*} Returns `query` as-is.
1266-
*/
1267-
queryTransform: function (query) {
1268-
return query;
1269-
}
1270-
};
1286+
this.$get = ['$http', '$log', 'DSUtils', function ($http, $log, DSUtils) {
12711287

12721288
/**
12731289
* @doc interface
@@ -4452,7 +4468,7 @@ module.exports = [function () {
44524468
* Load `dist/angular-data.js` or `dist/angular-data.min.js` onto your web page after Angular.js.
44534469
*
44544470
* #### Manual download
4455-
* Download angular-data.0.9.0.js from the [Releases](https://github.com/jmdobry/angular-data/releases)
4471+
* Download angular-data-0.9.0.js from the [Releases](https://github.com/jmdobry/angular-data/releases)
44564472
* section of the angular-data GitHub project.
44574473
*
44584474
* ## Load into Angular

dist/angular-data.min.js

+1-1
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

guide/angular-data/how.doc

+22
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
@doc overview
2+
@id how
3+
@name How do I...?
4+
@description
5+
6+
#### How do I serialize data before it's saved?
7+
```js
8+
DSHttpAdapter.defaults.serialize = function (data) {
9+
// custom payload format
10+
return {
11+
payload: data
12+
};
13+
};
14+
```
15+
16+
#### How do I deserialize data?
17+
```js
18+
DSHttpAdapter.defaults.deserialize = function (data) {
19+
// extract data from custom payload format
20+
return data ? data.payload : data;
21+
};
22+
```

guide/home.html

+2
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,8 @@ <h1>Features</h1>
2828
<li>Pluggable Adapters</li>
2929
<li>Custom JSON serializers/deserializers</li>
3030
<li>Query system for querying server/cache</li>
31+
<li>Add custom behavior</li>
32+
<li>Easy binding to scope</li>
3133
</ul>
3234
</div>
3335
<div class="span4">

guide/nav.html

+3
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,9 @@
3434
<li>
3535
<a href="/documentation/guide/angular-data/asynchronous">Asynchronous Methods</a>
3636
</li>
37+
<li>
38+
<a href="/documentation/guide/angular-data/how">How do I...?</a>
39+
</li>
3740
<li class="divider"></li>
3841
<li class="nav-header">Angular-data-mocks</li>
3942
<li>

karma.start.js

+3-2
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
// Setup global test variables
2-
var $rootScope, $q, $log, DSProvider, DS, app, $httpBackend, p1, p2, p3, p4, p5;
2+
var $rootScope, $q, $log, DSProvider, DSHttpAdapterProvider, DS, app, $httpBackend, p1, p2, p3, p4, p5;
33

44
var lifecycle = {};
55

@@ -73,8 +73,9 @@ beforeEach(function (done) {
7373
lifecycle.afterInject = function () {
7474
lifecycle.afterInject.callCount += 1;
7575
};
76-
module('app', function (_DSProvider_) {
76+
module('app', function (_DSProvider_, _DSHttpAdapterProvider_) {
7777
DSProvider = _DSProvider_;
78+
DSHttpAdapterProvider = _DSHttpAdapterProvider_;
7879
DSProvider.defaults.baseUrl = 'http://test.angular-cache.com';
7980
DSProvider.defaults.beforeValidate = lifecycle.beforeValidate;
8081
DSProvider.defaults.validate = lifecycle.validate;

src/adapters/http.js

+67-51
Original file line numberDiff line numberDiff line change
@@ -5,66 +5,82 @@
55
*/
66
function DSHttpAdapterProvider() {
77

8-
this.$get = ['$http', '$log', 'DSUtils', function ($http, $log, DSUtils) {
8+
/**
9+
* @doc property
10+
* @id DSHttpAdapterProvider.properties:defaults
11+
* @name defaults
12+
* @description
13+
* Default configuration for this adapter.
14+
*
15+
* Properties:
16+
*
17+
* - `{function}` - `serialize` - See [the guide](/documentation/guide/adapters/index). Default: No-op.
18+
* - `{function}` - `deserialize` - See [the guide](/documentation/guide/adapters/index). Default: No-op.
19+
* - `{function}` - `queryTransform` - See [the guide](/documentation/guide/adapters/index). Default: No-op.
20+
*/
21+
var defaults = this.defaults = {
22+
/**
23+
* @doc property
24+
* @id DSHttpAdapterProvider.properties:defaults.serialize
25+
* @name defaults.serialize
26+
* @description
27+
* Your server might expect a custom request object rather than the plain POJO payload. Use `serialize` to
28+
* create your custom request object.
29+
*
30+
* ## Example:
31+
* ```js
32+
* DSHttpAdapterProvider.defaults.serialize = function (data) {
33+
* return {
34+
* payload: data
35+
* };
36+
* };
37+
* ```
38+
*
39+
* @param {object} data Data to be sent to the server.
40+
* @returns {*} Returns `data` as-is.
41+
*/
42+
serialize: function (data) {
43+
return data;
44+
},
945

1046
/**
1147
* @doc property
12-
* @id DSHttpAdapterProvider.properties:defaults
13-
* @name defaults
48+
* @id DSHttpAdapterProvider.properties:defaults.deserialize
49+
* @name defaults.deserialize
1450
* @description
15-
* Default configuration for this adapter.
51+
* Your server might return a custom response object instead of the plain POJO payload. Use `deserialize` to
52+
* pull the payload out of your response object so angular-data can use it.
1653
*
17-
* Properties:
54+
* ## Example:
55+
* ```js
56+
* DSHttpAdapterProvider.defaults.deserialize = function (data) {
57+
* return data ? data.payload : data;
58+
* };
59+
* ```
1860
*
19-
* - `{function}` - `serialize` - See [the guide](/documentation/guide/adapters/index). Default: No-op.
20-
* - `{function}` - `deserialize` - See [the guide](/documentation/guide/adapters/index). Default: No-op.
21-
* - `{function}` - `queryTransform` - See [the guide](/documentation/guide/adapters/index). Default: No-op.
61+
* @param {object} data Response object from `$http()`.
62+
* @returns {*} Returns `data.data`.
2263
*/
23-
var defaults = this.defaults = {
24-
/**
25-
* @doc property
26-
* @id DSHttpAdapterProvider.properties:defaults.serialize
27-
* @name defaults.serialize
28-
* @description
29-
* Your server might expect a custom request object rather than the plain POJO payload. Use `serialize` to
30-
* create your custom request object.
31-
*
32-
* @param {object} data Data to be sent to the server.
33-
* @returns {*} Returns `data` as-is.
34-
*/
35-
serialize: function (data) {
36-
return data;
37-
},
64+
deserialize: function (data) {
65+
return data.data;
66+
},
3867

39-
/**
40-
* @doc property
41-
* @id DSHttpAdapterProvider.properties:defaults.deserialize
42-
* @name defaults.deserialize
43-
* @description
44-
* Your server might return a custom response object instead of the plain POJO payload. Use `deserialize` to
45-
* pull the payload out of your response object so angular-data can use it.
46-
*
47-
* @param {object} data Response object from `$http()`.
48-
* @returns {*} Returns `data.data`.
49-
*/
50-
deserialize: function (data) {
51-
return data.data;
52-
},
68+
/**
69+
* @doc property
70+
* @id DSHttpAdapterProvider.properties:defaults.queryTransform
71+
* @name defaults.queryTransform
72+
* @description
73+
* Transform the angular-data query to something your server understands. You might just do this on the server instead.
74+
*
75+
* @param {object} query Response object from `$http()`.
76+
* @returns {*} Returns `query` as-is.
77+
*/
78+
queryTransform: function (query) {
79+
return query;
80+
}
81+
};
5382

54-
/**
55-
* @doc property
56-
* @id DSHttpAdapterProvider.properties:defaults.queryTransform
57-
* @name defaults.queryTransform
58-
* @description
59-
* Transform the angular-data query to something your server understands. You might just do this on the server instead.
60-
*
61-
* @param {object} query Response object from `$http()`.
62-
* @returns {*} Returns `query` as-is.
63-
*/
64-
queryTransform: function (query) {
65-
return query;
66-
}
67-
};
83+
this.$get = ['$http', '$log', 'DSUtils', function ($http, $log, DSUtils) {
6884

6985
/**
7086
* @doc interface

src/index.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@
2525
* Load `dist/angular-data.js` or `dist/angular-data.min.js` onto your web page after Angular.js.
2626
*
2727
* #### Manual download
28-
* Download angular-data.<%= pkg.version %>.js from the [Releases](https://github.com/jmdobry/angular-data/releases)
28+
* Download angular-data-<%= pkg.version %>.js from the [Releases](https://github.com/jmdobry/angular-data/releases)
2929
* section of the angular-data GitHub project.
3030
*
3131
* ## Load into Angular

0 commit comments

Comments
 (0)