This repository has been archived by the owner on Jan 15, 2019. It is now read-only.
/
main.js
56 lines (49 loc) · 1.48 KB
/
main.js
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
$(document).ready(function() {
var UserModel = Backbone.Model.extend({});
var UserView = Backbone.View.extend({
template: _.template('name: <%- name %>'),
initialize: function() {
this.listenTo(this.model, 'change', this.render);
},
render: function() {
this.$el.html(this.template(this.model.toJSON()));
return this;
},
});
var AppView = Backbone.View.extend({
tagName: 'div',
id: 'app',
template: _.template('<ul><li><a href="/users/user1">user1</a></li><li><a href="/users/user2">user2</a></li></ul><div id="user"></div>'),
render: function() {
$('.loading').hide();
this.$el.html(this.template());
new UserView({ model: userModel, el: this.$('#user') }).render();
return this;
},
});
var AppRouter = Backbone.Router.extend({
routes: {
'': 'root',
'users(/:user)': 'users'
},
initialize: function() {
},
root: function() {
console.log('route /');
},
users: function(user) {
console.log('route /users/' + user);
userModel.set('name', user);
}
});
$(document).on('click', 'a[href^="/"]', function(e) {
e.preventDefault();
var href = $(e.currentTarget).attr('href');
console.log('click ' + href);
Backbone.history.navigate(href, { trigger: true });
});
var userModel = new UserModel({ name: 'no name' });
new AppView().render().$el.appendTo('body');
new AppRouter();
Backbone.history.start({ pushState: true, root: '/' });
});