File: README.md

package info (click to toggle)
libjs-backbone-deep-model 0.10.4-4
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 652 kB
  • sloc: javascript: 11,971; makefile: 17
file content (114 lines) | stat: -rw-r--r-- 2,866 bytes parent folder | download | duplicates (3)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
backbone-deep-model
===================

Improved support for models with nested attributes.

Allows you to get and set nested attributes with path syntax, e.g. `user.type`.

Triggers change events for changes on nested attributes.

Dependencies
============

Backbone >= 0.9.10

Installation
============

1. Include Backbone and it's dependencies in your page/app.
2. Include `distribution/deep-model.min.js`

Usage
=====

Then just have your models extend from Backbone.DeepModel instead of Backbone.Model.

Example code:

    //Create models with nested attributes
    var model = new Backbone.DeepModel({
        id: 123,
        user: {
            type: 'Spy',
            name: {
                first: 'Sterling',
                last: 'Archer'
            }
        },
        otherSpies: [
            { name: 'Lana' },
            { name: 'Cyrril' }
        ]
    });
    
    //You can bind to change events on nested attributes
    model.bind('change:user.name.first', function(model, val) {
        console.log(val);
    });

    //Wildcards are supported
    model.bind('change:user.*', function() {});
    
    //Use set with a path name for nested attributes
    //NOTE you must you quotation marks around the key name when using a path
    model.set({
        'user.name.first': 'Lana',
        'user.name.last':  'Kang'
    });
    
    //Use get() with path names so you can create getters later
    console.log(model.get('user.type'));    // 'Spy'

    //You can use index notation to fetch from arrays
    console.log(model.get('otherSpies.0.name')) //'Lana'

Author
======

Charles Davison - [powmedia](http://github.com/powmedia)


Contributors
============

- [mattyway](https://github.com/mattyway)
- [AsaAyers](https://github.com/AsaAyers)


Changelog
=========

0.10.4:
- Fix #68 Model or collection in attributes are eliminated when defaults are used

0.10.0:
- Support Backbone 0.9.10

0.9.0:
- Support Backbone 0.9.9 (mattyway)
- Add support for deep model defaults (mattyway)

0.8.0:
- Allow nested attribute as Model identifier (milosdakic)
- Add AMD support (drd0rk)
- Added "change:*" event triggers for ancestors of nested attributes. (jessehouchins)
- JSHint linting (tony)
- Fix: undefined in setNested resulting from a recent change in backbone master. (evadnoob)

0.7.4:
- Fix: #22 model.hasChanged() is not reset after change event fires
- Fix: #18 Setting a deep property to the same value deletes the property (mikefrey)
- Allow setting nested attributes inside an attribute whose value is currently null (sqs)

0.7.3:
- Add DeepModel.keyPathSeparator to allow using custom path separators

0.7.2:
- Check if the child object exists, but isn't an object. #12 (tgriesser)

0.7.1:
- Model.changedAttributes now works with nested attributes.
- Fix getting attribute that is an empty object

0.7:
- Update for Backbone v0.9.2