backbone-support 0.0.1 → 0.2.0
Sign up to get free protection for your applications and to get access to all the features.
- data/.gitignore +2 -0
- data/CHANGELOG +12 -0
- data/README.md +14 -10
- data/lib/assets/javascripts/backbone-support/swapping_router.js +1 -2
- data/lib/backbone-support/version.rb +1 -1
- data/spec/javascripts/support/jasmine.yml +2 -0
- metadata +6 -4
data/.gitignore
ADDED
data/CHANGELOG
ADDED
@@ -0,0 +1,12 @@
|
|
1
|
+
0.2.0
|
2
|
+
|
3
|
+
The version changes the order of the when a view has render called on it when
|
4
|
+
it is being swapped by a SwappingRouter. This fixes some browsers which would
|
5
|
+
display a flash of unstyled content when performing certain actions in their
|
6
|
+
render, like changing the body class. It introduces the requirement that all
|
7
|
+
views return an instance of themselves when rendered (a fairly standard
|
8
|
+
backbone convention).
|
9
|
+
|
10
|
+
0.0.1
|
11
|
+
|
12
|
+
Initial Version
|
data/README.md
CHANGED
@@ -1,11 +1,16 @@
|
|
1
|
-
|
1
|
+
There's no built-in garbage collection for Backbone’s event bindings, and
|
2
|
+
forgetting to unbind can cause bugs and memory leaks.
|
3
|
+
|
4
|
+
Backbone Support currently provides two utility classes, SwappingRouter and CompositeView,
|
5
|
+
that introduce a `leave()` function, which unbinds and cleans up the view.
|
6
|
+
They should be used where views are instantiated (in Router instances and in composite views).
|
2
7
|
|
3
8
|
Inspired by our projects and the Backbone.js on Rails book:
|
4
9
|
http://workshops.thoughtbot.com/backbone-js-on-rails
|
5
10
|
|
6
11
|
The book contains complete instructions and in-depth coverage of the internals
|
7
|
-
of CompositeView and
|
8
|
-
their usage
|
12
|
+
of CompositeView and SwappingRouter, and an example application that shows
|
13
|
+
their usage.
|
9
14
|
|
10
15
|
### SwappingRouter
|
11
16
|
|
@@ -14,7 +19,8 @@ A Router subclass the provides a standard way to swap one view for another.
|
|
14
19
|
This introduces a convention that all views have a `leave()` function,
|
15
20
|
responsible for unbinding and cleaning up the view. And the convention that
|
16
21
|
all actions underneath the same `Router` share the same root element, and
|
17
|
-
define it as `el` on the router.
|
22
|
+
define it as `el` on the router. It also requires that all view's render
|
23
|
+
method returns the view itself (a fairly standard backbone convention).
|
18
24
|
|
19
25
|
Now, a `SwappingRouter` can take advantage of the `leave()` function, and
|
20
26
|
clean up any existing views before swapping to a new one. It swaps into a new
|
@@ -24,10 +30,9 @@ view by rendering that view into its own `el`:
|
|
24
30
|
if (this.currentView && this.currentView.leave) {
|
25
31
|
this.currentView.leave();
|
26
32
|
}
|
27
|
-
|
33
|
+
|
28
34
|
this.currentView = newView;
|
29
|
-
this.currentView.render();
|
30
|
-
$(this.el).empty().append(this.currentView.el);
|
35
|
+
$(this.el).empty().append(this.currentView.render().el);
|
31
36
|
}
|
32
37
|
|
33
38
|
An example SwappingRouter would look as follows:
|
@@ -74,7 +79,7 @@ maintain a back-reference at `this.parent`. This is used to reach up and call
|
|
74
79
|
|
75
80
|
You'll need these, but chances are you already have them in your app:
|
76
81
|
|
77
|
-
* jQuery
|
82
|
+
* jQuery or Zepto
|
78
83
|
* Underscore
|
79
84
|
* Backbone
|
80
85
|
|
@@ -131,7 +136,7 @@ First off:
|
|
131
136
|
In your `config/application.rb`:
|
132
137
|
|
133
138
|
``` ruby
|
134
|
-
config.middleware.use Rack::Static,
|
139
|
+
config.middleware.use Rack::Static,
|
135
140
|
:urls => ['/vendor/plugins/backbone-support/lib/assets/javascripts']
|
136
141
|
```
|
137
142
|
|
@@ -157,7 +162,6 @@ end
|
|
157
162
|
Your individual specs will then need the full root path in `require`. For
|
158
163
|
example:
|
159
164
|
|
160
|
-
|
161
165
|
``` js
|
162
166
|
requirePublic = function(path) {
|
163
167
|
require("/public/javascripts/" + path);
|
@@ -9,8 +9,7 @@ _.extend(Support.SwappingRouter.prototype, Backbone.Router.prototype, {
|
|
9
9
|
}
|
10
10
|
|
11
11
|
this.currentView = newView;
|
12
|
-
this.currentView.render();
|
13
|
-
$(this.el).empty().append(this.currentView.el);
|
12
|
+
$(this.el).empty().append(this.currentView.render().el);
|
14
13
|
}
|
15
14
|
});
|
16
15
|
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: backbone-support
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 23
|
5
5
|
prerelease:
|
6
6
|
segments:
|
7
7
|
- 0
|
8
|
+
- 2
|
8
9
|
- 0
|
9
|
-
|
10
|
-
version: 0.0.1
|
10
|
+
version: 0.2.0
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- Chad Pytel
|
@@ -18,7 +18,7 @@ autorequire:
|
|
18
18
|
bindir: bin
|
19
19
|
cert_chain: []
|
20
20
|
|
21
|
-
date:
|
21
|
+
date: 2012-01-23 00:00:00 Z
|
22
22
|
dependencies:
|
23
23
|
- !ruby/object:Gem::Dependency
|
24
24
|
name: jasmine
|
@@ -44,6 +44,8 @@ extensions: []
|
|
44
44
|
extra_rdoc_files: []
|
45
45
|
|
46
46
|
files:
|
47
|
+
- .gitignore
|
48
|
+
- CHANGELOG
|
47
49
|
- Gemfile
|
48
50
|
- Gemfile.lock
|
49
51
|
- LICENSE
|