Advertisement
Guest User

Untitled

a guest
Jun 26th, 2016
77
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.65 KB | None | 0 0
  1. var $ = require('jquery');
  2. var Backbone = require('backbone');
  3. var listTemplate = require('../../templates/addresslist.hbs');
  4. var formTemplate = require('../../templates/addressform.hbs');
  5. var detailTemplate = require('../../templates/addressdetail.hbs');
  6.  
  7. var AddressFormView = Backbone.View.extend({
  8. tagName: 'form',
  9. template: formTemplate,
  10. events: {
  11. 'submit': 'addAddress'
  12. },
  13. render: function(){
  14. var renderedHtml = this.template();
  15. this.$el.html(renderedHtml);
  16. return this;
  17. },
  18. addAddress: function(event){
  19. event.preventDefault();
  20. this.collection.create({
  21. title: $('#title').val(),
  22. url: $('#url').val(),
  23. tag: $('#tag').val(),
  24. });
  25. $('#title').val('');
  26. $('#url').val('');
  27. $('#tag').val('');
  28. },
  29. });
  30.  
  31. var AddressListView = Backbone.View.extend({
  32. tagName: 'ul',
  33. initialize: function(){
  34. this.listenTo(this.collection, 'add', this.renderItem);
  35. },
  36. render: function(){
  37. return this;
  38. },
  39. renderItem: function(address){
  40. console.log('address', address);
  41. var addressItem = new AddressItemView({model: address});
  42. this.$el.append(addressItem.render().el);
  43. }
  44. });
  45.  
  46. var AddressItemView = Backbone.View.extend({
  47. tagName: 'li',
  48. template: listTemplate,
  49. render: function(){
  50. var context = this.model.toJSON();
  51. this.$el.html(this.template(context));
  52. return this;
  53. }
  54. });
  55.  
  56. var AddressDetailView = Backbone.View.extend({
  57. template: detailTemplate,
  58. render: function(){
  59. this.$el.html('').append(this.template);
  60. return this;
  61. }
  62. });
  63.  
  64. module.exports = {
  65. 'AddressFormView': AddressFormView,
  66. 'AddressListView': AddressListView,
  67. 'AddressItemView': AddressItemView,
  68. 'AddressDetailView': AddressDetailView,
  69. }
  70.  
  71. var $ = require('jquery');
  72. var Backbone = require('backbone');
  73. var views = require('./views/addressview');
  74. var models = require('./models/address');
  75.  
  76. var Router = Backbone.Router.extend({
  77. routes: {
  78. '': 'index',
  79. 'detail/:id/': 'detail'
  80. },
  81.  
  82. initialize: function(){
  83. this.collection = new models.AddressCollection();
  84. },
  85.  
  86. index: function(){
  87. var addressForm = new views.AddressFormView({collection: this.collection});
  88. $('.app').html(addressForm.render().el);
  89.  
  90. var addressListing = new views.AddressListView({collection: this.collection});
  91. $('.app').append(addressListing.render().el);
  92.  
  93. this.collection.fetch();
  94. },
  95.  
  96. detail: function(addressId){
  97. this.collection.fetch().done(function(){
  98. var address = this.collection.get(addressId);
  99. var addressDetail = new views.AddressDetailView({model: address});
  100. $('.app').html(addressDetail.render().el);
  101. }.bind(this));
  102. },
  103. });
  104.  
  105. var router = new Router();
  106.  
  107. module.exports = router;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement