Refactor conversation view into two classes
One that resides in the left hand column as a list item, and another which displays in the main column and handles ui events therein.
This commit is contained in:
parent
6ff6ef07a9
commit
511b121a2f
4 changed files with 29 additions and 18 deletions
|
@ -3,13 +3,12 @@ var Whisper = Whisper || {};
|
||||||
(function () {
|
(function () {
|
||||||
'use strict';
|
'use strict';
|
||||||
|
|
||||||
Whisper.ConversationView = Backbone.View.extend({
|
Whisper.ConversationListItemView = Backbone.View.extend({
|
||||||
tagName: 'li',
|
tagName: 'li',
|
||||||
className: 'conversation',
|
className: 'conversation',
|
||||||
|
|
||||||
events: {
|
events: {
|
||||||
'click': 'open',
|
'click': 'open',
|
||||||
'submit form': 'sendMessage'
|
|
||||||
},
|
},
|
||||||
initialize: function() {
|
initialize: function() {
|
||||||
this.template = $('#contact').html();
|
this.template = $('#contact').html();
|
||||||
|
@ -21,20 +20,8 @@ var Whisper = Whisper || {};
|
||||||
this.$el.addClass('closed');
|
this.$el.addClass('closed');
|
||||||
},
|
},
|
||||||
|
|
||||||
sendMessage: function(e) {
|
|
||||||
if (!this.$input.val().length) { return false; }
|
|
||||||
this.model.sendMessage(this.$input.val());
|
|
||||||
this.$input.val("");
|
|
||||||
e.preventDefault();
|
|
||||||
},
|
|
||||||
|
|
||||||
remove: function() {
|
|
||||||
this.$el.remove();
|
|
||||||
},
|
|
||||||
|
|
||||||
open: function(e) {
|
open: function(e) {
|
||||||
var v = new Whisper.MessageListView({collection: this.model.messages()});
|
var v = new Whisper.ConversationView({el: $('#main'), model: this.model});
|
||||||
v.render();
|
|
||||||
},
|
},
|
||||||
|
|
||||||
render: function() {
|
render: function() {
|
|
@ -6,7 +6,7 @@ var Whisper = Whisper || {};
|
||||||
Whisper.ConversationListView = Whisper.ListView.extend({
|
Whisper.ConversationListView = Whisper.ListView.extend({
|
||||||
tagName: 'ul',
|
tagName: 'ul',
|
||||||
id: 'contacts',
|
id: 'contacts',
|
||||||
itemView: Whisper.ConversationView,
|
itemView: Whisper.ConversationListItemView,
|
||||||
collection: Whisper.Threads,
|
collection: Whisper.Threads,
|
||||||
|
|
||||||
events: {
|
events: {
|
||||||
|
|
23
js/views/conversation_view.js
Normal file
23
js/views/conversation_view.js
Normal file
|
@ -0,0 +1,23 @@
|
||||||
|
var Whisper = Whisper || {};
|
||||||
|
|
||||||
|
(function () {
|
||||||
|
'use strict';
|
||||||
|
|
||||||
|
Whisper.ConversationView = Backbone.View.extend({
|
||||||
|
initialize: function() {
|
||||||
|
this.listenTo(this.model, 'destroy', this.remove); // auto update
|
||||||
|
var v = new Whisper.MessageListView({collection: this.model.messages()});
|
||||||
|
v.render();
|
||||||
|
},
|
||||||
|
events: {
|
||||||
|
'submit #new-message': 'sendMessage',
|
||||||
|
},
|
||||||
|
|
||||||
|
sendMessage: function(e) {
|
||||||
|
if (!this.$input.val().length) { return false; }
|
||||||
|
this.model.sendMessage(this.$input.val());
|
||||||
|
this.$input.val("");
|
||||||
|
e.preventDefault();
|
||||||
|
},
|
||||||
|
});
|
||||||
|
})();
|
|
@ -94,11 +94,12 @@
|
||||||
|
|
||||||
<script type="text/javascript" src="js/chromium.js"></script>
|
<script type="text/javascript" src="js/chromium.js"></script>
|
||||||
<script type="text/javascript" src="js/views/notifications.js"></script>
|
<script type="text/javascript" src="js/views/notifications.js"></script>
|
||||||
<script type="text/javascript" src="js/views/message_view.js"></script>
|
|
||||||
<script type="text/javascript" src="js/views/list_view.js"></script>
|
<script type="text/javascript" src="js/views/list_view.js"></script>
|
||||||
|
<script type="text/javascript" src="js/views/message_view.js"></script>
|
||||||
<script type="text/javascript" src="js/views/message_list_view.js"></script>
|
<script type="text/javascript" src="js/views/message_list_view.js"></script>
|
||||||
<script type="text/javascript" src="js/views/conversations/show.js"></script>
|
<script type="text/javascript" src="js/views/conversation_list_item_view.js"></script>
|
||||||
<script type="text/javascript" src="js/views/conversation_list_view.js"></script>
|
<script type="text/javascript" src="js/views/conversation_list_view.js"></script>
|
||||||
|
<script type="text/javascript" src="js/views/conversation_view.js"></script>
|
||||||
<script type="text/javascript" src="js/views/conversations/new.js"></script>
|
<script type="text/javascript" src="js/views/conversations/new.js"></script>
|
||||||
<script type="text/javascript" src="js/popup.js"></script>
|
<script type="text/javascript" src="js/popup.js"></script>
|
||||||
</body>
|
</body>
|
||||||
|
|
Loading…
Reference in a new issue